¿Cómo /dev/stdout apunta a diferentes procesos por separado en Linux?

¿Cómo /dev/stdout apunta a diferentes procesos por separado en Linux?

Puedo entender que cada proceso fd 0,1,2 apunta a /dev/stdin, /dev/stdout, /dev/stderr. Si escribo algunos datos en /dev/stdin, solo pude recibir datos del fd 1 del proceso respectivo.

Si cada proceso stdout (fd 1) apunta a /dev/stdout, entonces si escribo algunos datos en /dev/stdin debería transmitirse a todos los procesos, ¿verdad? ¿Me estoy perdiendo algo?

Respuesta1

En Linux, /dev/std{in,out,err}no se conecte a dispositivos, estos dan acceso a los descriptores de archivos correspondientes de cada proceso. Vea el resultado de 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

Entonces todo esto es manejado por /proc/self; ver¿Para qué proceso es `/proc/self/`?

información relacionada