2010-11-14 118 views
2

我想在C中使用命名管道,我遇到了一些困难。就匿名管道而言,我只是用r/w描述符创建管道,然后每当我想读或写时关闭另一端。这很容易实现,因为我可以每次打开()和关闭()另一端。命名管道在c

使用命名管道,我有点困惑,我找到了指令mkfifo()它创建命名管道,但不明白如何正确读取和写入。

谢谢

+0

你的问题是不明确的时间。 'open'永远不会与普通(匿名)管道一起使用,所以我想知道你是否在做你认为你正在做的事情。 – 2010-11-14 21:31:48

+0

您可能会错过fifo需要在一端写作和另一端阅读两端开放的观点。 FIFO上的任何读/写呼叫都被阻止。手册页在这里http://linux.die.net/man/3/mkfifo。否则,你不会问这个问题,只是简单地说明你的问题。你写了什么代码,是什么导致你的困惑? – vpit3833 2010-11-14 21:34:11

+2

阅读[Beej的Unix IPC指南](http://beej.us/guide/bgipc/)。 – pmg 2010-11-14 21:34:57

回答

2

没有什么值得的。使用mkfifo来制作管道,然后让你的进程读写任何文件。这也不是C特定的。管道已与mkfifo()创建后

mkfifo testfifo

猫testfifo

然后在另一个窗口

回声 “你好,世界”> testfifo

4

:你可以这样做(可以在过去的任何时候完成 - 命名管道存在于文件系统中,直到它们未被链接),读取侧使用open("/path/to/pipe", O_RDONLY)打开它,写入侧用打开它。

之后,它可以像匿名管道一样使用。

0

我想你应该只使用管道,因为他们处理不同进程之间的数据传输,无论每个proccess需要