- 进程间通信(IPC)
- 管道的一个重要特点是使用管道的两个进程之间必须存在某种关系,如使用
popen
需要提供另一端进程的文件名,使用pipe()
的两个进程分别隶属于父子进程 - 记名管道: 用于在不相关的进程通信
- 套接字(socket):
- 进程旗语:信号量
- **共享内存:**就是两个进程共同拥有同一片内存;要使用共享内存进行通信,一个进程需要创建一片内存空间专门作为通信用,而其他进程则将该片内存映射到自己的(虚拟)地址空间,这样读写自己地址空间中对应共享内存的区域时,就是在和其他进程进行通信;缺点是两个进程必须在同一台物理机器上才能使用,安全性脆弱等
- 消息队列: 支持多个进程,不是管道的点对点,只在内存中实现
思考题
- 消息队列和管道异同:管道时一个线性字节数组,类似文件,可以使用文件读写的方式进行访问,消息队列时一列具有头和尾的消息排列,新来的消息放在队列尾部,而读取消息则从队列头开始;
- 信号和信号量时同一回事吗?信号就是一个内核对象,或者时一个内核数据结构,发送方将该数据结构内容填写好,并指明该信号目标进城后,发送特定的软件中断;信号量不只是通信机制,更是一种同步机制;