在bash进程中,文件描述符255有什么用途?

21

执行以下命令以显示当前进程拥有的文件描述符,结果显示有4个文件描述符。文件描述符0、1和2分别是标准输入、标准输出和标准错误输出。那么文件描述符255是什么?

ls /proc/$$/fd

输出:

0  1  2  255

这个问题最好在unix.stackexchange.com上问。 - Barmar
1
你为什么需要在这个问题中发布一张图片?难道你不能只粘贴命令的文本输出吗? - Barmar
@Barmar 这就是为什么我在这个问题中添加了Linux标签的原因。 - Aman Jain
1
你使用了 Code Snippet 工具,它看起来像 [<>]。这个工具用于将可执行的 HTML/Javascript 放入你的问题中。使用 {} 工具标记其他语言的代码。 - Barmar
1
@AlexandreLavoie 我在 Python 程序中使用文件描述符 (fd) 来更改标准输入、输出和错误,使用 { os 模块 }。在处理时遇到了这个问题,所以我在这里问了一下。 - Aman Jain
显示剩余2条评论
1个回答

22

打开的文件有0(标准输入stdin),1(标准输出stdout)和2(标准错误stderr)。255是bash使用的一个小技巧,用于在这些文件被重定向时保留它们的副本。这仅适用于bash。

来源:https://books.google.com/books?id=wWjqCF9HLfYC&pg=PA231

示例:

echo foo 1>/dev/null 2>/dev/null >/proc/$$/fd/255

输出:
foo

1
“keep a copy of these”在书中措辞不当,好像一个文件描述符可以保留多个打开文件的副本。 - Armali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接