15.3 環境

ISO C 標準での必要に応じて、環境に関する ARM C コンパイラおよび C ライブラリの実装定義機能について説明します。

コマンドラインを ARM アーキテクチャベースの環境から main() の引数にマップする方法は実装によって異なります。汎用 ARM C ライブラリでは以下がサポートされています。

main()

main() に渡される引数は、ホワイトスペースが二重引用符で囲まれている場合を除き、ホワイトスペースで区切られた、コマンドラインのワード(入力元/出力先変更は含まれません)となります。

  • ホワイトスペース文字とは、isspace() の結果が真となる任意の文字です。
  • 二重引用符または二重引用符内のバックスラッシュ文字(\)の前には、バックスラッシュ文字を追加する必要があります。
  • 二重引用符内の I/O 転送命令は認識されません。

インタラクティブデバイス

ホスティングされない ARM C ライブラリの実装では、入出力デバイスが意味をなさない場合があります。汎用 ARM C ライブラリでは一対のデバイスがサポートされています。どちらのデバイスも :tt で呼び出され、キーボード入力と VDU 画面出力を処理する目的で使用されます。この汎用的な実装では、以下のようになります。
  • I/O 転送が行われない限り、:tt に接続されたストリームではバッファリングが実行されません。
  • :tt 以外への I/O 転送が行われると、フルファイルバッファリングが使用されます。ただし、stdoutstderr の両方が同じファイルに転送される場合は、ラインバッファリングが使用されます。

標準入力ストリーム、標準出力ストリーム、標準エラーストリームの転送

汎用 ARM C ライブラリを使用すると、実行時に、標準入力ストリーム、標準出力ストリーム、および標準エラーストリームを転送できます。たとえば、mycopy が、標準入力を標準出力にコピーする、ホストデバッガ上で実行されるプログラムである場合には、以下のコマンドラインを入力することでこのプログラムが実行されます。
mycopy < infile > outfile 2&gt; errfile
ファイルは以下のように転送されます。
stdin
標準入力ストリームは、infile に転送されます。
stdout
標準出力ストリームは、outfile に転送されます。
stderr
標準エラーストリームは、errfile に転送されます。
以下の転送が可能です。
0&lt; filename
stdin filename から読み出します。
&lt; filename
stdin filename から読み出します。
1&gt; filename
stdout filename に書き込みます。
&gt; filename
stdout filename に書き込みます。
2&gt; filename
stderr filename に書き込みます。
2&gt;&1
stderrstdout と同じ場所に書き込まれます。
&gt;& file
stdoutstderr の両方を filename に書き込みます。
&gt;&gt; filename
stdout filename に追加します。
&gt;&gt;& filename
stdoutstderr の両方を filename に追加します。
ターゲット上で stdinstdout、および stderr を転送するには、以下のように定義する必要があります。
#pragma import(_main_redirection)
ファイル転送は、以下のいずれかの場合にのみ実行されます。
  • 起動されているオペレーティングシステムがファイル転送をサポートしている場合。
  • プログラムが文字の読み出しと書き込みを実行し、C ライブラリ関数 fputc() および fgetc() がプログラムによって置換されていない場合。
関連する参考文書
10.88 #pragma import symbol_name
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.