15.3 Environment

Describes implementation-defined aspects of the ARM C compiler and C library relating to environment, as required by the ISO C standard requires.

The mapping of a command line from the ARM architecture-based environment into arguments to main() is implementation-specific. The generic ARM C library supports the following:

main()

The arguments given to main() are the words of the command line not including input/output redirections, delimited by whitespace, except where the whitespace is contained in double quotes.

Note

  • A whitespace character is any character where the result of isspace() is true.
  • A double quote or backslash character \ inside double quotes must be preceded by a backslash character.
  • An input/output redirection is not recognized inside double quotes.

Interactive device

In a nonhosted implementation of the ARM C library, the term interactive device might be meaningless. The generic ARM C library supports a pair of devices, both called :tt, intended to handle keyboard input and VDU screen output. In the generic implementation:
  • No buffering is done on any stream connected to :tt unless input/output redirection has occurred.
  • If input/output redirection other than to :tt has occurred, full file buffering is used except that line buffering is used if both stdout and stderr were redirected to the same file.

Redirecting standard input, output, and error streams

Using the generic ARM C library, the standard input, output and error streams can be redirected at runtime. For example, if mycopy is a program running on a host debugger that copies the standard input to the standard output, the following line runs the program:
mycopy < infile > outfile 2> errfile
and redirects the files as follows:
stdin
The standard input stream is redirected to infile.
stdout
The standard output stream is redirected to outfile.
stderr
The standard error stream is redirected to errfile.
The permitted redirections are:
0< filename
Reads stdin from filename.
< filename
Reads stdin from filename.
1> filename
Writes stdout to filename.
> filename
Writes stdout to filename.
2> filename
Writes stderr to filename.
2>&1
Writes stderr to the same place as stdout.
>& file
Writes both stdout and stderr to filename.
>> filename
Appends stdout to filename.
>>& filename
Appends both stdout and stderr to filename.
To redirect stdin, stdout, and stderr on the target, you must define:
#pragma import(_main_redirection)
File redirection is done only if either:
  • The invoking operating system supports it.
  • The program reads and writes characters and has not replaced the C library functions fputc() and fgetc().
Non-ConfidentialPDF file icon PDF versionARM DUI0375F
Copyright © 2007, 2008, 2011, 2012, 2014 ARM. All rights reserved.