在Linux中使用文件作为IPC?

在Linux中使用文件作为IPC?,linux,ipc,Linux,Ipc,我们正在编写一个有两个进程的程序。一个进程从串行设备读取数据,另一个进程使用该数据并将其发送到网络 我一直在研究,这两个过程有很多沟通方式,似乎最好的选择是管道或消息队列。我喜欢队列,因为网络进程与串行进程相比不可靠或相对较慢,加上队列允许共享数据类型而不是原始字节流 我们还需要一个日志来监控每个IPC通信,所以我们想,为什么不使用共享文件呢?因此,proc1写入文件,proc2读取文件的每一行,并在处理时将每一行标记为已发送。我们可以使用文件锁定 文件方法可以用作缓冲和日志记录 拥有此文件对于

我们正在编写一个有两个进程的程序。一个进程从串行设备读取数据,另一个进程使用该数据并将其发送到网络

我一直在研究,这两个过程有很多沟通方式,似乎最好的选择是管道或消息队列。我喜欢队列,因为网络进程与串行进程相比不可靠或相对较慢,加上队列允许共享数据类型而不是原始字节流

我们还需要一个日志来监控每个IPC通信,所以我们想,为什么不使用共享文件呢?因此,proc1写入文件,proc2读取文件的每一行,并在处理时将每一行标记为已发送。我们可以使用文件锁定

文件方法可以用作缓冲和日志记录

拥有此文件对于业务逻辑非常有价值

所以。。我们应该选择消息、管道还是文件


在本例中,设备在ARM设备上运行Linux 2.6.3,而硬盘驱动器只是一个SD卡。

在您的情况下,在休眠或关闭应用程序时,也可能适合使用缓冲区并将其刷新到文件系统。与套接字或管道相比,实现可能更复杂。

消息队列软件通常记录消息,而不考虑介质。例如,您可以使用共享内存在进程之间进行通信,并使用日志文件存储消息历史记录。您的MQ将自动为您处理此问题。@chrisayock如果MQ由于网络故障而变得非常大,会发生什么情况?使用或某些事件循环和。@basilestrynkevich所以只需使用管道?读取和,等等。。。您可能需要一些事件循环,可以是您自己的,也可以是poll,等等。。