文章目录
- 进程间通信
- 管道
进程间通信
- 进程间通信的核心:让不同的进程看到同一份资源(内存)
- 纯内存级,不会将数据落到内存上
管道
-
管道就是文件,只能单向通信,一端只保留写,一端只保留读
-
管道是基于文件的,文件是跟随进程的,所以管道也是跟随进程的
-
管道是有访问控制的,写满了如不能再写,管道没有数据读端必须等待(阻塞)
-
写方关闭,读方读到0,表示读到文件结尾
-
读方关闭,OS会关闭写端
匿名管道
- 匿名管道是通过 pipe()系统调用创建的,只能在有亲缘关系的进程之间使用(例如父子进程)
详情代码见:实现匿名管道多进程任务派发
命名管道
- 命名管道可以通过 mkfifo()系统调用创建,是一种特殊的文件类型,存在于文件系统中
详情代码见:命名管道多进程任务派发