stdin
POSIXは0、1、2stdout
を指定しますかstderr
、それとも単なる慣例ですか?他のシステムがこの規則から外れますか、それともこれは安全な仮定ですか?
ベストアンサー1
POSIX仕様に標準化されているように見えますが、
POSIX.1-2017プロキシ経由unistd.h
ヘッダーは、ファイルストリームに対して次のシンボル定数を定義する必要があります。
STDERR_FILENO
stderrのファイル番号2.STDIN_FILENO
標準入力のファイル番号は0です。STDOUT_FILENO
1. 標準出力のファイル番号です。
しかし、
stderr
"、、、stdin
-stdout
標準I / Oストリーム"のPOSIXドキュメント状態、このボリュームPOSIX.1-2017はISO C規格に準拠しています。
これISO ISO/IEC 9899:201x 標準ただ説明すると、
定義済みの3つのストリームstdin、stdout、およびstderrは、プログラムの開始時に方向が指定されていません。
ISO Cはこれに対して比較的沈黙しているように見え、カーネルが、およびSTDOUT
というSTDERR
記述子に必要なものを割り当てることを許可しますSTDIN
。しかし、POSIX ドキュメントには、unistd.h
そのレベルで解決すべき問題が何であるかが明確に記載されています。