jco*_*ora 6 filesystem files devices c
我知道大多数设备都显示在/dev目录中,但直到现在我才真正注意到其中有两个非常奇怪但又熟悉的名字......
我说的是stdin@和stdout@那里:

这些是干什么用的?它们是否被 C 语言的函数使用?
Gil*_*il' 12
这些文件实际上被称为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 函数(如open、close、dup、read、write等)操作的文件描述符相同。 C 函数不使用它们,它们是与相同对象交互的其他方式。
/dev/stdin存在的原因和朋友是有时一个程序需要一个文件名,但你想告诉它使用一个已经打开的文件(例如管道)。所以你可以通过/dev/stdin告诉程序读取它的标准输入。
进一步阅读: