誰かが、プロセスが常に開く3つの異なるファイルがあると述べました。これは何を意味するのでしょうか?それらはどのファイルですか?
誰かが、プロセスが常に開く3つの異なるファイルがあると述べました。これは何を意味するのでしょうか?それらはどのファイルですか?
回答:
開かれたファイルはディスク上のファイルではありません。それらは、ストリーム(疑似ファイル)、stdin(0)、stdout(1)、およびstderr(2)です。以下は、POSIX標準からの関連する抜粋です。
バッファリングが関連付けられているファイルはストリームと呼ばれ、定義されたタイプFILEへのポインタとして宣言されます。fopen()関数は、ストリームの特定の説明データを作成し、以降のすべてのトランザクションでストリームを指定するためのポインターを返します。通常、3つのオープンストリームがあり、ヘッダーで定数ポインターが宣言され、標準のオープンファイルに関連付けられています。
プログラムの起動時に、標準入力(従来の入力を読み取るため)、標準出力(従来の出力を書き込むため)、および標準エラー(診断出力を書き込むため)の3つのストリームを事前に定義して明示的に開く必要はありません。開くと、標準エラーストリームは完全にバッファリングされません。標準入力ストリームと標準出力ストリームは、ストリームがインタラクティブデバイスを参照しないと判断できる場合にのみ、完全にバッファリングされます。