以下命令用于根据 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
。