標準入力 -これは、プロセスがユーザーから情報を取得するために読み取るファイルハンドルです。
標準出力 -プロセスはこのファイルハンドルに通常の情報を書き込みます。
標準エラー -プロセスはエラー情報をこのファイルハンドルに書き込みます。
それは私がそれを作ることができるのと同じくらい馬鹿げている:-)
もちろん、それは慣例によるものです。必要に応じて、エラー情報を標準出力に書き込むのを妨げるものは何もありません。3つのファイルハンドルを完全に閉じて、I / O用に独自のファイルを開くこともできます。
プロセスが開始するとき、これらのハンドルはすでに開いているはずであり、それらのハンドルからの読み取りや書き込みが可能です。
デフォルトでは、それらはおそらく端末デバイス(例:)に接続されています/dev/tty
が、シェルを使用すると、プロセスが開始する前に、これらのハンドルと特定のファイルやデバイス(または他のプロセスへのパイプライン)間の接続を設定できます(可能な操作はかなり賢いです)。
例は次のとおりです。
my_prog <inputfile 2>errorfile | grep XYZ
これは:
- のプロセスを作成します
my_prog
。
inputfile
標準入力として開きます(ファイルハンドル0)。
errorfile
標準エラー(ファイルハンドル2)として開きます。
- の別のプロセスを作成します
grep
。
- 標準出力を添付
my_prog
の標準入力にgrep
。
あなたのコメントを再:
/ devフォルダーでこれらのファイルを開くと、実行中のプロセスの出力が表示されないのはなぜですか?
それは通常のファイルではないからです。UNIXはどこかですべてをファイルシステム内のファイルとして表示しますが、最低レベルではそうではありません。/dev
階層内のほとんどのファイルは、文字デバイスまたはブロックデバイスであり、事実上デバイスドライバです。サイズはありませんが、メジャーデバイス番号とマイナーデバイス番号があります。
それらを開くと、物理ファイルではなくデバイスドライバーに接続され、デバイスドライバーは十分にスマートなので、個別のプロセスを個別に処理する必要があります。
Linux /proc
ファイルシステムについても同様です。これらは実際のファイルではなく、カーネル情報への厳密に制御されたゲートウェイです。