Linux では、/dev/stdout はどのようにして異なるプロセスを個別に指しているのでしょうか?

Linux では、/dev/stdout はどのようにして異なるプロセスを個別に指しているのでしょうか?

各プロセスの fd 0、1、2 が /dev/stdin、/dev/stdout、/dev/stderr を指していることは理解できます。/dev/stdin にデータを書き込むと、それぞれのプロセスの fd 1 からのみデータを受信することができました。

すべてのプロセスの stdout (fd 1) が /dev/stdout を指している場合、/dev/stdin にデータを書き込むと、すべてのプロセスにブロードキャストされるはずですが、何か見落としているのでしょうか?

答え1

Linux では、/dev/std{in,out,err}デバイスに接続しないでください。デバイスは各プロセスの対応するファイル記述子へのアクセスを許可します。次の出力を参照してくださいls -l /dev/std*:

lrwxrwxrwx. 1 root root 15 Feb 24 09:34 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 Feb 24 09:34 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Feb 24 09:34 /dev/stdout -> /proc/self/fd/1

これはすべて次のように処理されます/proc/self`/proc/self/` はどのプロセス用ですか?

関連情報