/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/` 是哪个进程的?

相关内容