como /dev/stdout está apontando para processos diferentes separadamente no Linux?

como /dev/stdout está apontando para processos diferentes separadamente no Linux?

Posso entender que cada processo fd 0,1,2 está apontando para/dev/stdin,/dev/stdout,/dev/stderr. Se eu gravar alguns dados em /dev/stdin, poderei receber dados apenas do fd 1 do respectivo processo.

Se todo processo stdout (fd 1) estiver apontando para/dev/stdout então se eu escrever alguns dados em/dev/stdin devo transmitir para todos os processos, certo?, estou faltando alguma coisa?

Responder1

No Linux, /dev/std{in,out,err}não conecte dispositivos, eles dão acesso aos descritores de arquivo correspondentes de cada processo. Veja a saída 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

Então tudo isso é tratado por /proc/self; verPara qual processo é `/proc/self/`?

informação relacionada