在Unix系统中,我只知道我们可以使用FIFO文件进行两个进程之间的通信,并且我已经用C项目对它进行了测试。
现在我想知道我们是否可以做这样的事情:
我尝试了以下内容,但它不起作用。在一个终端上:
mkfifo fifo.file
echo "hello world" > fifo.file
在另一个终端上:
cat fifo.file
现在我可以看到"hello world"
。但是,这两个过程都会立即完成,我无法继续输入/读取fifo.file
。
答案 0 :(得分:1)
来自info mkfifo
:
以这种方式创建FIFO特殊文件后,任何进程 可以像普通文件一样打开它进行读写。 但是,必须在可以之前同时打开两端 继续对其进行任何输入或输出操作。打开FIFO 正常读取阻塞,直到某个其他进程打开相同的FIFO 写作,反之亦然。
所以你应该在一个进程(终端)中打开文件进行阅读:
cat fifo.file
打开文件以便在另一个进程(终端)中写入:
echo 'hello' > fifo.file
上面示例中的 cat
在文件(输入)结束时停止从文件读取。如果要继续从文件中读取,请使用tail -F
命令,例如:
tail -F fifo.file
如果您要编写并同时将字符串发送到管道的另一端,请使用cat
,如下所示:
cat > fifo.file
键入时,字符串将被发送到管道的另一端。按 Ctrl - D 停止写入。