使用重定向操作时出现意外行为

使用重定向操作时出现意外行为

以下命令用于根据 GNU 手册复制输入文件描述符:

exec 6<&0

但是当我像这样更改重定向运算符时,即使文件描述符“0”指向 stdin,该命令仍然有效:

exec 6>&0

有人能解释一下这背后的原因吗?

答案1

<&Bash 对和执行完全相同的操作>&,即它使用dup()系统调用来复制文件描述符。

当文件描述符以与打开方式相反的方式进行读取或写入时,将发生由于尝试写入已打开以进行读取的文件等而引起的任何错误。

最初,交互式 Bash /dev/tty以文件描述符 0、1 和 2 的形式打开,以供读写。

exec 3<&1 做什么在 Unix 和 Linux SE 上,用户 cuonglm 不厌其烦地使用 来记录这种行为strace

相关内容