如何在linux下使用持久命名管道?
使用命名管道有时非常方便,例如mkfifo file.fifo
。
但 file.fifo 不是持久的,如果计算机重新启动或编写器进程崩溃,我无法从管道中获取任何内容。那么,有没有什么方法可以让管道数据存储在磁盘而不是内存中呢?
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最简单的解决方案是使用纯文件来存储数据。例如,使用管道(或类似的)来通知有新数据。当然,您必须注意进程间锁定。
或者您可以使用“消息队列”(请参阅mqueue.h)。它们在进程崩溃的情况下是持久的,但如果系统重新启动则不会。
或者您可以使用实现“持久消息队列”的第三方库,例如 MQTT 或 RabbitMQ。
The simplest solution is to use plain files to store the data. For example, and use a pipe (or similar) to notify that there are new data, for example. You must take care of interprocess locking, of course.
Or you can use "message queues" (see mqueue.h). They are persistent in case of process crash, but not if the system is rebooted.
Or you can use a third-party library that implements "persistent message queues", such as MQTT or RabbitMQ.