2013-09-10 32 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并将缓冲区刷新到文件系统。与套接字或管道相比,实现可能更复杂。