2011-06-14 70 views
3

我在Linux上使用命名管道在PHP脚本和C++守护进程之间进行通信。守护进程坐在并观察管道,在脚本被调用并处理它们时处理命令。该系统是一个小型嵌入式设备,它唯一运行的是Web服务器和守护进程。关闭时删除命名管道

我应该在程序关闭时删除命名管道,还是将它留在文件系统上?嵌入式设备通常会很难关机,所以即使我在正常退出时正确关闭它,它仍然会在大部分时间左右。当我在系统重新启动时打开它时,是否会在管道中出现未知数据?如果是这样,我应该删除它,并重新启动,每次重新启动,或者是矫枉过正?

回答

5

删除FIFO是整齐,整齐,但这并不重要。特别是,当系统重新启动时,FIFO将是空的。

因此,最好设计您的程序以接受FIFO的存在,并在缺失时创建它。如果他们彻底关闭,那么删除FIFO是很好的。

+0

+1我以为但不知道 – 2011-06-14 01:59:40

+0

谢谢。我在检查什么时候启动,如果管道不存在,就进行管道检查。我会在析构函数中抛出一个unlink()来清理程序是否正好退出并称之为良好。 – RedPeasant 2011-06-14 02:26:23

0

我多年没有使用过它们,但我大约80%确定您可以永久保留节点。并且它们在启动时将是空的,因为数据保存在内核数据结构中。