mkfifo替代方案

时间:2010-10-23 09:30:07

标签: c++ c unix

我有一个不断需要写信息的过程。此外,还有第二个过程有时会连接到写入过程的“信息通道”,并且应该读取自连接后写入的信息。此过程可能还会多次断开连接并重新连接。

我目前正在使用命名管道实现这一点,在我的c ++程序中使用mkfifo()。不幸的是,如果我在这个fifo上调用open(),它会一直阻塞,直到一个进程打开fifo进行读取。对于命名管道,这是很正常的,但我需要这个打开命令是非阻塞的。

在这种情况下你知道替代mkfifo吗?

海因里希

3 个答案:

答案 0 :(得分:1)

您可以在回送接口上使用Unix域套接字或常规TCP套接字。

答案 1 :(得分:0)

您可以使用共享内存或mmap。它应包含最旧数据的偏移量和数据的内存块

fifo限制为64k(取决于发行版和一些设置)。

答案 2 :(得分:0)

我终于使用了unix消息队列,Reader和Writer可以完全独立启动,一切都可以非阻塞地执行