Linux进程间通信方式
匿名管道只适用于有亲缘关系进程(父子进程、兄弟进程),单向通信,数据读完就清空;数据基于字节流,半双工。优点简单;缺点传输速度有限,只能单向。分为本地套接字(AF‑UNIX,本机进程间传输,性能高)和网络套接字;采用客户端‑服务端模型,通用性最强;适合跨服务器数据交互。内核提供的队列,进程把数据封装成消息体发送到内核队列;本质是计数器,主要用来做进程同步、互斥,不是用来传输大量数据;二元信号量实现互斥,计数信号量控制访问资源的进程数量。一般搭配共享内存使用。在物理内存开辟一块空间,多个进程虚拟内存映射到同一块物理内存;数据不用在内核和用户态来回拷贝,速度是IPC里最快的;本身不带互斥机制,必须依靠信号量或者锁来控制并发访问,不然会出现数据错乱。速度排序:共享内存 > 消息队列 > 管道 > socket;跨主机:只有socket支持,剩下四种仅限同一台机器。