2011-06-14 102 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%確定您可以永久保留節點。並且它們在啓動時將是空的,因爲數據保存在內核數據結構中。