我编码这个
$ 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 中发生的情况。