文件描述符和 /dev/fd

文件描述符和 /dev/fd

文件描述符在整个进程或整个系统中是否唯一。因为每个文件似乎都使用相同的 stdin 和 stdout 描述符。这些有什么特别的吗?标准输入和标准输出如何工作?我意识到dev/fd, 是一个指向 的链接proc/self/fd,但是它们怎么都有相同的编号呢?

编辑: 即使查看其他进程后,大多数文件描述符的数量也大致相同。

答案1

这里有几件事可能会令人困惑。

文件描述符附加到文件(一般意义上)并且特定于给定进程。文件描述符本身由其关联进程通过数字 id 引用,但一个文件描述符可以有多个 id。示例:id 1 和 2 称为标准输出和标准错误,通常指相同的文件描述符。

符号链接/proc/pid/fd/x仅提供提示X进程的文件描述符PID链接到。如果它是常规文件,符号链接会给出其路径。但如果文件描述符是一个 inet 套接字,那么符号链接就被破坏了。对于常规文件(或具有类似 tty 的路径的文件),可以打开它,但您将获得不同的文件描述符指向同一对象。

相关内容