2013-09-10 66 views
0

我們正在編寫一個有2個進程的程序。一個進程從串口設備讀取數據,另一個進程使用這些數據並將其發送到網絡。在Linux中使用文件作爲IPC?

我一直在研究,有很多方法來溝通這兩個過程,似乎最好的選擇將是管道或消息隊列。我喜歡隊列,因爲與串行相比,網絡進程不可靠或相對較慢,而且隊列允許共享數據類型而不是原始字節流。

我們還需要一個日誌來監視每個IPC通信,所以我們認爲,爲什麼不使用共享文件?所以proc 1寫入文件,proc 2讀取文件的每一行,並在處理它時將每一行標記爲已發送。我們可以使用文件鎖定。

文件方法可以用作緩衝和記錄。

有了這個文件對商業邏輯來說非常有價值。

所以..我們應該去消息,管道還是文件?

PS。在這種情況下,設備在ARM設備上運行Linux 2.6.3,而硬盤驅動器只是一個SD卡。

+0

@msw它都是你的 – jacktrades

+0

消息隊列軟件通常會記錄消息,而不管介質。例如,您可以使用共享內存在進程和日誌文件之間進行通信以存儲消息歷史記錄。你的MQ會自動爲你處理。 – chrisaycock

+0

@chrisaycock如果MQ由於網絡故障而變得非常大,會發生什麼情況? – jacktrades

回答

0

在你的情況下,當休眠或關閉應用程序時,也可能使用mmap並將緩衝區刷新到文件系統。與套接字或管道相比,實現可能更復雜。