IPC Inter-Process Communication(进程间通信)
#进程间通信方式
名称 | 特点 | 优点 |
---|---|---|
传统的进程间通信方式(管道) | 单个进程之间的通信,效率较低,通过内核 | 易于管理 |
共享内存 | 可以传递大量数据,不经过内核(kernel) | 操作较为繁琐 |
套接字 | 用在主机与主机之间,带有ip地址 | 可以跨越物理进行传递 |
传统的进程间通信方式
无名管道(pipe)
特点:
1.当创建PIPE的时候有连个端口,读/写端分开
2.管道因为是无名的,所以不可以被外部的进程所引用,只可以在有金属关系的进程中引用
3.不保证写入原子性
又名管道的读写操作状态
匿名管道读写关系
在收到SIGPIPE信号是没有及时处理,程序会死亡,收到错误pipebroken
有名管道(FIFO)
与匿名管道相比,最大的不同就是可以用过open打开,任何两个进程都可以进行通信,并且有写入原子性
并且操作基本与普通文件没有差异
函数原型 | int access(const char *pathname, int mode); |
---|---|
头文件 | #include <unistd.h> |
作用 | 检查文件是否存在,读写状态 |
经典应用