我的 /dev 目录中的这些文件是什么?

我的 /dev 目录中的这些文件是什么?

我知道大多数设备都显示在/dev目录中,但直到现在我才真正注意到其中有两个非常奇怪但又熟悉的名字......

我正在谈论的stdin@stdout@那里:

在此处输入图片描述

这些是做什么用的?它们是 C 语言函数使用的吗?

答案1

这些文件实际上被称为stdin和。添加的字符是 ,stdout以告诉您它们是stderr@ls符号链接.ls -l将会揭示这些符号链接的目标是/proc/self/fd/0/proc/self/fd/1/proc/self/fd/2

/proc是内核提供的虚拟文件系统,用于显示操作系统的信息。除其他信息外,还有类似/proc/1234这样的目录,其中包含有关 ID 为 1234 的进程的信息。/proc/self是指向该目录的符号链接,供任何访问该目录的进程使用(内核会向不同的进程返回不同的目标)。

/proc/self/fd(也符号链接到/dev/fd)包含进程打开的每个文件的一个条目。每个条目对应于一个文件描述符,并且是指向该文件的符号链接(如果可能的话 — 对于管道、套接字和已删除的文件,符号链接提供的信息对调试有用,但不指向可以通过名称重新打开的文件)。这些文件描述符与您使用 C 函数(例如openclosedupreadwrite等)操作的文件描述符相同。它们不是由使用C 函数,它们是与相同对象交互的其他方式。

原因/dev/stdin和朋友存在是,有时程序需要文件名,但您想告诉它使用已打开的文件(例如管道)。因此,您可以传递/dev/stdin来告诉程序读取其标准输入。

进一步阅读:

相关内容