wie zeigt /dev/stdout in Linux separat auf verschiedene Prozesse?

wie zeigt /dev/stdout in Linux separat auf verschiedene Prozesse?

Ich kann verstehen, dass jeder Prozess fd 0,1,2 auf /dev/stdin, /dev/stdout, /dev/stderr zeigt. Wenn ich einige Daten in /dev/stdin schreibe, kann ich nur Daten von fd 1 des jeweiligen Prozesses empfangen.

Wenn die Standardausgabe (fd 1) jedes Prozesses auf /dev/stdout zeigt, sollte es doch an alle Prozesse gesendet werden, wenn ich Daten nach /dev/stdin schreibe, oder? Übersehe ich etwas?

Antwort1

Stellen Sie unter Linux /dev/std{in,out,err}keine Verbindung zu Geräten her, diese gewähren Zugriff auf die entsprechenden Dateideskriptoren der einzelnen Prozesse. Sehen Sie sich die Ausgabe von an 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

Das alles wird also erledigt von /proc/self; sieheFür welchen Prozess ist `/proc/self/`?

verwandte Informationen