我正在尝试在C中使用命名管道并遇到一些困难。就匿名管道而言,我只是使用r / w描述符创建管道,然后每次我想要读取或写入时关闭另一端。这很容易做到,因为我每次都可以打开()并关闭()另一端。
使用命名管道,我有点困惑,我找到了创建命名管道的指令mkfifo()
,但不理解如何正确读取和写入。
由于
答案 0 :(得分:4)
使用mkfifo()
创建管道后(可能在过去的任何时间点完成 - 文件系统中存在命名管道,直到它们被取消链接),读取端使用{{1}打开它写作方用open("/path/to/pipe", O_RDONLY)
打开它。
之后它可以像匿名管道一样使用。
答案 1 :(得分:2)
没什么可说的。使用mkfifo创建管道,然后像任何文件一样读取和写入进程。它也不是C特定的。你可以这样做:
mkfifo testfifo
cat testfifo
然后在另一个窗口
回声“你好,世界”> testfifo
答案 2 :(得分:0)
我认为你应该只使用管道,因为它们处理不同进程之间的数据传输,无论每个进程占用的时间