两个窗口,同一用户,带有 bash 提示。在 window-1 类型中:
$ mkfifo f; exec <f
所以 bash 现在正试图从映射到命名管道的文件描述符 0 中读取f
。在 window-2 类型中:
$ echo ls > f
现在 window-1 打印一个 ls 然后 shell 死掉了。为什么?
下一个实验:用 再次打开 window-1 exec <f
。在 window-2 类型中:
$ exec 3>f
$ echo ls >&3
在上面的第一行之后,window-1 被唤醒并打印一个提示。为什么?在上面的第二行之后,window-1 打印ls
输出并且 shell 保持活动状态。为什么?实际上,现在在window-2 中,echo ls > f
并没有关闭window-1 外壳。
答案一定与window-2中引用命名管道的文件描述符3的存在有关?!