每个进程有自己独立的地址空间,是相互独立的,一般不能互相访问.(特列:共享内存区)
进程间通信主要有:管道,系统IPC(包括消息队列,信号量,共享存储),SOCKET
管道:
- 管道是半双工通信(也就是数据只能在一方流动),具有固定的读端和写端
- 只能用于具有亲缘关系的进程(父子进程,兄弟进程)
- 可以把它看作文件,对它的读写可以用read write函数,但是它不属于文件系统,只存在内存中。
- 无名管道用于父子进程,有名管道用于兄弟进程
- 先进先出,尾部写数据,头部写数据
信号量:
- 信号量是计数器,用来控制多个进程对共享资源的访问
- 主要作为不同进程间以及同一进程下的线程的同步手段
消息队列:
- 消息队列是由消息的链表,存放在内核中,并由消息队列标识符标识。
- 克服管道信号传递信息少等缺点
共享内存区:
- 共享内存就是映射一段可以被进程公共访问的内存,这段共享内存由一个内存创建,但可以被多个进程访问,共享内存是最快的IPC。
Socket:
- 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。