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