如何在linux下使用持久命名管道?

时间:2011-08-19 07:00:27

标签: linux persistent fifo mkfifo

使用命名管道非常方便,例如mkfifo file.fifo

但file.fifo不是持久性的,如果计算机重新启动或者编写进程崩溃,我就无法从管道中获取任何内容。那么,有没有方法让管道数据存储在磁盘而不是内存中?

感谢。

1 个答案:

答案 0 :(得分:2)

最简单的解决方案是使用普通文件来存储数据。例如,并使用管道(或类似的)来通知有新数据。当然,您必须处理进程间锁定。

或者您可以使用“消息队列”(请参阅​​ mqueue.h )。它们在进程崩溃的情况下是持久的,但如果系统重新启动则不会。

或者您可以使用实现“持久消息队列”的第三方库。请参阅this similar question