B.1.2. 环境

基于 ARM 体系结构的环境的命令行到 main() 中参数的映射是与执行相关的。 通用的 ARM C 库支持以下内容:

main()

赋予 main() 的参数是指该命令行中一些不包括输入/输出重定向的字,字与字之间用空格分隔,但包含在双引号中的空格除外。

Note

  • isspace() 结果为 true 的情况下,空格字符是任意字符。

  • 双引号或双引号之内的反斜杠字符 \ 的前面必须有一个反斜杠字符。

  • 输入/输出重定向在双引号之内不会被识别。

交互设备

在 ARM C 库的非主机执行中,术语交互设备可能无意义。 通用的 ARM C 库支持两个都称为 :tt 的一对设备,它们用于处理键盘输入和 VDU 屏幕输出。 在通用执行中:

  • 除非输入/输出重定向已发生,否则在连接 :tt 的任何流中都不进行缓冲处理

  • 如果输入/输出已重定向到 :tt 以外的地方,则使用整个文件缓冲处理,但如果 stdoutstderr 都被重定向到同一个文件,则使用行缓冲处理。

重定向标准输入、输出和错误流

使用通用的 ARM C 库,可以在运行时重定向标准输入、输出和错误流。 例如,如果 mycopy 是一个运行在主机调试器上的程序,该程序将标准输入复制到标准输出,则使用以下行运行该程序:


mycopy < infile > outfile 2> errfile

并按如下方式重定向文件:

stdin

标准输入流重定向至 infile

stdout

标准输出流重定向至 outfile

stderr

标准错误流重定向至 errfile

允许的重定向为:

0< filename

filename 读取 stdin

< filename

filename 读取 stdin

1> filename

stdout 写入 filename

> filename

stdout 写入filename

2> filename

stderr 写入filename

2>&1

stderr 写入与 stdout 相同的位置。

>& file

stdoutstderr 都写入filename

>> filename

stdout 附加至filename

>>& filename

stdoutstderr 都附加至filename

要重定向目标上的 stdinstdoutstderr,必须进行以下定义:


#pragma import(_main_redirection)

仅在以下两种情况下进行文件重定向:

  • 调用操作系统支持文件重定向

  • 程序读写字符而并不替换 C 库函数 fputc()fgetc()

Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0348AC
Non-Confidential