无法写入命名管道(Can't write to named pipe)

2019-08-17 13:31发布

我试图写一个命名管道,与mkfifo制成。 但是,当我运行命令,(例如) ls > myNamedPipe ,我不能再输入命令进入庆典。 我仍然可以写人物,这就是这么多了。

Answer 1:

命名管道保持打开状态,直到你从别的地方看。 这是为了允许不同的进程之间的通信。

尝试:

mkfifo fifo
echo "foo" > fifo

然后打开另一个终端和类型:

cat fifo

如果您返回到第一终端,你会发现,你现在可以输入其他命令。

也看看与反向happends:

# 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


文章来源: Can't write to named pipe