文件描述符 10 是什么?

文件描述符 10 是什么?

文件描述符 10 是什么?

现实世界中的例子(标准输出被忽略,标准错误重定向到标准输出,文件描述符 10 的数据重定向到标准输出),我丢失了以下文档/上下文:

./cluexec21nodes 'mkdir /home/mortense/sambapub;cd /home/mortense/sambapub;./runcola.sh >/dev/null 2>&1 10>&1 &'

标准文件描述符是

0   Standard Input (stdin)
1   Standard Output (stdout)
2   Standard Error (stderr)

但是文件描述符 10 是什么?

这是在 Linux 系统(可能是 Red Hat)上使用的。

答案1

除了标准文件描述符之外,还有 3-1024 个。这些可以在脚本中使用

exec 10<> afilename

从此时起,任何写入文件描述符 10 的内容都将写入afilename

当你有

./script.sh 10>&1 

您正在将原本发送到文件描述符 10 的所有内容重定向到 stdout。

您将需要查看runcola.sh脚本来了解其为何这样做。

答案2

文件描述符不是固定的;程序可以以任何想要的方式使用它们。(甚至 fd 的 0-2 也可以关闭、打开和重用。)

在这种情况下,fd 10 似乎是任意选择的;它可能./runcola.sh期望能够向其写入一些附加信息。您必须阅读脚本本身才能确定。

答案3

描述符 10 用于注释。

维基百科有一篇很好的入门文章文件描述符。说语法sh将一个描述符“重定向”到另一个描述符有点误导。可以在“UNIX 操作系统的设计”中找到可靠的信息来源。系统调用的文档dup(2)揭示dup2(2)了很多信息。

重力保罗,其他人(你知道你是谁)可能也知道一些额外的资源。伙计们?

相关内容