~によるとこの回答、、、およびはすべて最初に同じ場所(と同じ)に接続されており、合計stdin
を読み書きする規則は次のとおりです。stdout
stderr
/dev/tty
stdin
stdout
stderr
それでは、なぜ1つにマージせずに分離stdin
するのですか?stdout
ベストアンサー1
FILEポインタ(stdin、stdout、stderrなど)には、デフォルトのファイル記述子を1つだけ含めることができます。したがって、次のパイプライン設定がある場合:
ls | grep foo | less
grepのstdin、stdout、およびstderrには2つのリンクパイプライン()があるため、すべて異なるfileno()があります。したがって、他のファイルも必要です。