【发布时间】:2014-06-09 08:18:03
【问题描述】:
我想在两个不同的程序之间进行通信。一个输出 LED 信息的修改后的流光溢彩程序和我自己的读取此信息的程序。
我读到了命名管道和共享内存。但对我来说,不清楚数据存储在哪里。由于我将交换大量数据,我不想每次都将这些数据写入磁盘。我正在使用树莓派,SD 卡应该可以使用更多时间;)
所以基本问题是:用什么方法可以在不写入磁盘的情况下与另一端交换信息?我不确定是否将共享内存写入 ram,我想澄清一下。 我读到的另一个想法是 /dev/shm 应该是一个 ram 磁盘。我也可以在这个位置使用命名管道吗?信息是否会保存在 ram 中?
最好的方法是什么?谢谢:)
【问题讨论】:
-
尝试了一个非常复杂的解决方案 - TCP/IP 通信(在两个应用程序之间建立客户端/服务器通信)对您来说是一个有效的解决方案吗?除此之外,命名管道正是此类任务的基础设施
-
命名管道可能是最简单的变体。然后是unix域套接字。然后总是有 tcp/ip,如前所述。将命名管道或 unix 域套接字放在哪里并不重要,只有文件名和一些标志被写入文件系统。 /dev/shm 如果您想随机播放大量数据,非常方便(它比“经典” shm 更容易使用)。
-
@NirMH 与管道或 UNIX 域套接字相比,TCP/IP 有哪些优势,前提是在同一台机器上的进程之间进行通信?
-
@el.pescado: TCP/IP 没有写入磁盘 - 数据通过 TCP/IP 网络层作为字节流传输 - 我认为最低层将是 TCP(不会下降到NIC 本身),但我不完全确定
-
@NirMH 我的意思是,当您可以使用例如UNIX 域套接字?