关闭时删除命名管道

3
我正在使用一种命名管道来在Linux上的PHP脚本和C++守护程序之间进行通信。当脚本被调用并生成命令时,守护进程会坐等并监视管道,以处理这些命令。该系统是一个小型嵌入式设备,唯一运行的是Web服务器和守护程序。
程序关闭时,我应该删除命名管道吗?还是将其留在文件系统中是可以接受的?由于嵌入式设备经常会出现硬关机,因此即使我在退出时正确地关闭它,它也会大多数时间保留下来。当系统重新启动时,我会在管道中遇到未知数据吗?如果是这样,我应该在每次重新启动时将其删除并重建,还是这样做过头了?
2个回答

6

删除FIFO是整洁的,但不是必要的。特别是在系统重新启动时,FIFO将为空。

因此,最好设计您的程序以接受FIFO的存在,并在缺少时创建它。如果它们被干净地关闭,那么删除FIFO是好的。


谢谢。我正在检查启动时是否存在管道,如果不存在则创建它。我会在析构函数中抛出unlink()以清理,如果程序顺利退出就调用它。 - RedPeasant

0

我已经好几年没有使用它们了,但我大概80%的确定你可以永远保留节点。并且它们会在启动时为空,因为数据保存在内核数据结构中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接