我可以理解每个进程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/` 是哪个进程的?