/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/` 是哪個流程的?

相關內容