B.1.2. Environment

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 non hosted 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().

Copyright © 2007, 2010 ARM Limited. All rights reserved.ARM DUI 0348A
Non-Confidential