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

如何在linux下使用持久命名管道?,linux,persistent,fifo,mkfifo,Linux,Persistent,Fifo,Mkfifo,有时使用命名管道非常方便,例如mkfifo file.fifo 但是file.fifo不是持久的,如果计算机重新启动或写入程序进程崩溃,我无法从管道中获取任何信息。那么,有没有办法让管道数据存储在磁盘而不是内存中 谢谢。最简单的解决方案是使用普通文件存储数据。例如,使用管道(或类似管道)通知存在新数据。当然,您必须注意进程间锁定 或者您可以使用“消息队列”(请参见mqueue.h)。在进程崩溃的情况下,它们是持久的,但在系统重新启动时则不会 或者,您可以使用实现“持久消息队列”的第三方库。请参阅

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

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


谢谢。

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

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


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

命名管道仅将文件系统用作名称空间和基本访问控制–这可能会产生误导。它们不是真实的文件,通过管道的数据永远不会存储在文件系统中。如果您需要其他东西,那么命名管道不是您要寻找的工具。