linux - 在 Linux 中使用文件作为 IPC?

标签 linux ipc

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

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

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

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

拥有此文件对于业务逻辑非常有值(value)。

那么..我们应该选择消息、管道还是文件?

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

最佳答案

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

关于linux - 在 Linux 中使用文件作为 IPC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18728377/

相关文章:

c - 将数据从父进程传递到其子进程——IPC、UNIX

linux - kubectl顶级节点报告的内存利用率高于Linux系统命令

linux - linux下多线程epoll的一个问题

android - 应该使用哪个 Linux 来构建 Android

c - 使用 open() 和 mmap() 在进程之间共享文本文件

linux - libnl-3 包括损坏的?

linux - 如何在 Linux CentOS 中为除 root 以外的普通用户启动/停止 Tomcat

Linux nasm 程序集将字符附加到字符串

c - 如何在没有 while 循环的情况下使用 nanomsg 调查架构?

跨平台、跨语言的消息传递系统?