Linux / Unixに「非標準」ストリームがありますか?

Linux / Unixに「非標準」ストリームがありますか?

Linuxでは、いわゆる「標準ストリーム」はstdin、stdout、stderrです。これを「標準」と呼ぶ理由があります。非標準ストリームはありますか?カーネルはこれらの非標準ストリームを根本的に異なる方法で処理しますか?

ベストアンサー1

この場合、「ストリーム」はプロセスで開かれたファイルです。 (「ストリーム」という言葉は、この記事に関連しない他の意味を持つことができます。)

これら3つの標準ストリームは、プログラムの起動時にすでに開いている必要があるストリームです。ファイル記述子0は、プログラムがユーザー入力または基本データ入力を読み取る必要がある場所であるため、標準入力と呼ばれます。ファイル記述子1は、プログラムが通常のデータ出力をそこに書き込む必要があるため、標準出力と呼ばれます。ファイル記述子2は、プログラムがそこにエラーメッセージを記録する必要があるため、標準エラーと呼ばれます。

他のファイル記述子番号には事前に割り当てられた役割がないため、標準ではありません。それらは最終的にプログラムが望むどんな目的にも使用されます。したがって、プログラムによって開かれたすべてのファイルは「非標準ストリーム」と呼ばれることがありますが、これは奇妙で混乱する可能性があります。 「stdin、stdout、またはstderr以外のファイルを開く」には実際には名前は必要ありませんが、「非標準ストリーム」「特殊な種類のファイルや非標準の方法で開かれるファイルがあるようですが、そうではありません。

ファイル記述子0-2の一般的な役割は、標準ライブラリといくつかのプログラムによって与えられます。たとえば、コンソールログインプログラムとターミナルエミュレータはシェル(または他のプログラム)を起動し、これらのファイル記述子でターミナルを開きます。 C標準ライブラリは、FILE*これら3つの標準記述子のオブジェクト(Cではこれをストリームと呼びます)を作成します。カーネルには特別な処理はありません。

おすすめ記事