
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/`?