需求

多进程通信有哪几种方式?

解决

管道

  • 命名管道 FIFO 使用 mkfifo 来创建管道文件。 不相关进程也可以通信。
  • 匿名管道 使用 fork 来创建。只能用于父子进程。

消息队列

queue 保存在内核中的消息列表,如果没有释放,会一直存在。缺点时,不适合大数据的传输,单个消息有长度限制,全部消息总长度也有限制。

共享内存

同一块内存,多个进程都可以读写,可以省去复制的时间。但是如何管理多个进程的读写是个问题。

信号量

信号量可以用来管理共享内存,只有拿到信号量的才能进行读写。

信号

异常工作下的情况,就需要使用信号来进行干预了。比如说 ctrl-c 发出的 SIGINT 用来终止进程。

socket

可以用来本机之间不同进程的通信,也可以用作网络上不同主机之间的通信。

参考

{整理} Linux 进程间通信的方式、应用场景及优缺点

Linux进程间通信(IPC)的六种方式

一文搞懂六大进程通信机制原理(全网最详细)

Linux进程间通信详解(最全)