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