Shell

標準 I/O 文件描述符

  • November 25, 2018

我編碼這個

$ ls -l 1> stdout.txt

我得到了想要的輸出,

1> stdout.txt

將標準輸出的輸出重定向到文件 stdout.txt。

我沒有看到磁碟上存在任何此類文件。什麼樣的文件系統支持這樣的文件,是ramfs嗎?

這與procfssysfs有什麼相似之處嗎?

如果您使用的是 Linux,並且我正確閱讀了您的問題,請查看/proc.

對於特定的過程,請查看/proc/[pid]/fd,例如ls -l /proc/123/fd/

還有一種特殊的方法可以通過以下方式到達目前程序 fd:/proc/self/fd

請注意,例如ls -l /proc/self/fd將用於ls程序而不是您目前的 shell,您可以通過以下方式查看:

cat /proc/self/cmdline | tr '\000' '\n'

或者

cat /proc/self/status

最後看看PPid哪個應該是你的shell的PID。

Name:   cat
State:  R (running)
Tgid:   12696
Pid:    12696
PPid:   312

作為一個實驗,您可以嘗試打開兩個終端視窗:

  1. 在視窗 1 中輸入echo $$以獲取該 shell 的 PID。
  2. 在視窗 2 中說cat /proc/[pid]/fd/1
  3. 在視窗 1 中開始輸入並觀察視窗 2 中發生的情況。

引用自:https://unix.stackexchange.com/questions/74771