mkfifo fifo
echo 1> fifo 最后一个命令阻止。
我在gnu libc
中找到了对此的解释但是,必须在两端同时打开它才能继续对其进行任何输入或输出操作。打开FIFO以便正常读取块,直到某个其他进程打开相同的FIFO进行写入,反之亦然。
但是
>mkfifo fifo
>exec 5<>fifo
>echo 1 >&5
不会阻止并且效果很好。 AFAIK shell再次使用dup2进行重定向 这有什么不同?
实际上,当我提出问题时,我找到了答案。我将在下面发布。
答案 0 :(得分:1)
答案很简短。
来自我的Linux发行版man 7 fifo
在Linux下,打开FIFO进行读写将在阻塞和非阻塞模式下成功。 POSIX将此行为保留为未定义。
所以这是由于重定向<>
。