![FD 超过 2 个、超过 (stdin/stdout/sterr)](https://linux22.com/image/65388/FD%20%E8%B6%85%E8%BF%87%202%20%E4%B8%AA%E3%80%81%E8%B6%85%E8%BF%87%20(stdin%2Fstdout%2Fsterr).png)
我认为这篇文章并不是题外话。我们在 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个,我有以下三个严重的问题:
- 什么是
/dev/fd/3
FD? - 其余的人在哪里?
- 您知道关于其余部分的相关参考资料吗?
答案1
任何时候你打开一个文件(或者任何可以像文件一样打开的东西,比如套接字),你都会得到一个文件描述符,它由一个 int 表示。前 3 个是自动为进程创建的 stdin、stdout 和 stderr。打开的任何其他文件都会获得其他描述符。我怀疑它只是每次增加数字,但我不知道这是否是一个可靠的现象。因此 3 和 4 将是该进程首先打开的 2 个文件。 7 是打开的第 5 个文件。