11
我试图写入命名管道,使用mkfifo。但是当我运行命令时,(ex)ls > myNamedPipe
,我不能再输入命令到bash中。我仍然可以编写角色,这就是它。无法写入命名管道
我试图写入命名管道,使用mkfifo。但是当我运行命令时,(ex)ls > myNamedPipe
,我不能再输入命令到bash中。我仍然可以编写角色,这就是它。无法写入命名管道
命名管道保持打开状态,直到您从其他位置读取它为止。这是为了允许不同进程之间的通信。
尝试:
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
非常感谢!谢谢一堆! – tay10r 2013-03-13 04:38:51
谢谢 - 这很好用!你能解释我为什么吗?我不太清楚'exec 3 <> fifo'行如何修复东西.. – Joost 2013-12-06 13:53:33
将fifo连接到文件描述符会导致shell缓冲写入fifo的数据。没有它,任何对fifo的写入都会阻塞,直到读取写入的内容为止。使用文件描述符,shell会缓存“foo”和“bar”,并且任何从该文件描述符读取的内容都可以在稍后读取它们。 – chepner 2014-01-17 15:21:25