我正在尝试向使用mkfifo创建的命名管道写入数据。但是,当我运行命令(ex) ls > myNamedPipe
时,我不能再在bash中输入命令了。我仍然可以输入字符,但就这些。
我正在尝试向使用mkfifo创建的命名管道写入数据。但是,当我运行命令(ex) ls > myNamedPipe
时,我不能再在bash中输入命令了。我仍然可以输入字符,但就这些。
mkfifo fifo
echo "foo" > fifo
然后打开另一个终端窗口,输入:
Then open another terminal and type:
->然后打开另一个终端窗口,输入:
cat fifo
如果您返回到第一个终端,您会注意到现在可以输入其他命令。
同时也看看反向操作会发生什么:
# terminal 1
cat fifo
# terminal 2
echo "foo" > fifo
# and now you can see "foo" on terminal 1
如果您希望在尝试向FIFO写入内容时终端不会“挂起”,请将文件描述符附加到FIFO:
mkfifo fifo
exec 3<> fifo
echo "foo" > fifo
echo "bar" > fifo
exec 3<> fifo
这行代码是怎么修复的。 - Joost