Linux 环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1 把数据从用户空间拷到内核缓冲区,进程2 再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。
① 管道 (使用最简单):只能用于有血缘关系的进程,例如父子进程,兄弟进程。
② 信号 (开销最小):携带数据量比较少,开销小,比较快
③ 共享映射区 (无血缘关系)
④ 本地套接字 (最稳定):用于网络中,稳定性最好,复杂度最高