FD 超过 2 个、超过 (stdin/stdout/sterr)

FD 超过 2 个、超过 (stdin/stdout/sterr)

我认为这篇文章并不是题外话。我们在 Unix 上下文中拥有三个传统的文件描述符:

0 == STDIN
1 == STDOUT
2 == STDERR

但在新文章、博客、帖子、答案等中,我阅读的内容比上述FD更多,例如:
找出哪些文件描述符共享相同的“打开文件描述”
为什么使用 shell 循环处理文本被认为是不好的做法?
输入/输出重定向
使用执行
文件描述符和 shell 脚本
然而吉尔斯在上一个链接中回答了,但经过一番谷歌搜索后,我没有找到有关给定 FD 的参考资料。另外,当我使用以下 hack 时:

root@debian:/home/mohsen# ls /dev/fd/
0  1  2  3

我看的不多于4个,但是我在一些例子中看到了4个5或7个,我有以下三个严重的问题:

  1. 什么是 /dev/fd/3 FD?
  2. 其余的人在哪里?
  3. 您知道关于其余部分的相关参考资料吗?

答案1

任何时候你打开一个文件(或者任何可以像文件一样打开的东西,比如套接字),你都会得到一个文件描述符,它由一个 int 表示。前 3 个是自动为进程创建的 stdin、stdout 和 stderr。打开的任何其他文件都会获得其他描述符。我怀疑它只是每次增加数字,但我不知道这是否是一个可靠的现象。因此 3 和 4 将是该进程首先打开的 2 个文件。 7 是打开的第 5 个文件。

相关内容