Linux 进程间通信概述

SystemV IPC

Linux 引入了 SystemV 中 IPC 的集中实现方式,包括:信号量、共享内存、消息队列。

共享内存

共享内存基于文件实现,用操作文件的方式来操作共享内存区。

原理是对一块物理内存做多个映射,用引用计数来维护,只有引用计数为0时,才能释放。

共享内存的特点是:

  • 速度快,但自身没有同步功能,需要配合外部的同步机制。

信号量

为什么说信号量也是一种通信机制?

其实通信并不一定就是要发送数据,只要能够相互感知,通知到对方,就算是一种通信。 类比抛媚眼也算是通信的一种。

消息队列

  • 并非基于文件,由自己的一套API,使用起来不方便。
  • 消息队列是面向消息的(并非字节流),消息由类型。
  • 消息队列有自己的同步机制,无需外部添加。

信号

常用于父子之间通信,只要你知道了对方的PID,就可以给对方发信号。

kill(pid, signal)来发送信号。


创建于: 2023-09-08T16:21:27, Lastmod: 2023-09-24T18:08:59