как /dev/stdout указывает на разные процессы по отдельности в Linux?

как /dev/stdout указывает на разные процессы по отдельности в Linux?

Я могу понять, что каждый процесс 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/`?

Связанный контент