我編碼這個
$ ls -l 1> stdout.txt
我得到了所需的輸出,
1> stdout.txt
將輸出從標準輸出重定向到檔案 stdout.txt。
我在磁碟上沒有看到任何此類文件。什麼樣的文件系統支援這樣的文件,是記憶體檔案系統?
這和下面的有沒有相似之處行程檔案系統和系統檔案系統?
答案1
如果您使用的是 Linux,並且我正確地閱讀了您的問題,請查看/proc
。
對於特定過程,請查看/proc/[pid]/fd
,例如ls -l /proc/123/fd/
還有一種特殊的方法可以透過以下方式存取當前進程 fd:/proc/self/fd
。
請注意,egls -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 中輸入
echo $$
以取得該 shell 的 PID。 - 在窗口2中說
cat /proc/[pid]/fd/1
- 在視窗 1 中開始輸入並觀察視窗 2 中發生的情況。