1. 前言
上一小结谈到了操作系统中进程和线程的区别,其中进程之间、线程之间的通信方式不同,进程通信(Inter-Process Communication,简称 IPC)是指不同进程之间交换信息。操作系统中时刻都在进行 IPC,例如微信读取本地的文件,就是微信程序和文件系统进程交互的过程。
2. 进程间通信
面试官提问: 操作系统进程之间的通信方式有哪些?有什么特点?
题目解析:
操作系统中最常用的 IPC 方式有 5 种,分别是管道、命名管道、信号、共享内存以及套接字。
2.1 管道
管道(pipe),默认指无名管道。管道在两个进程之间建立一个通道,一个进程向这个通道写入字节流,另一个进程从这个通道读取字节流。用 C 语言描述管道示例:
#include <unistd.h> // 引入linux头文件
int pipe(int fd[2]); // 返回:如果成功返回0,失败则返回-1
上述定义的 fd 对象,其中 fd[0]
表示读文件描述符,f[1]
表示写文件描述符。
假设存在两个进程&#