笔记目录
1.进程间通信概念 IPC
进程通常需要与其它进程进行协作完成工作任务,他们之间需要通信已到达信息交互的需求,进程的用户空间都是私有的,而内核空间是共享的,所以进程间通信是基于内核的通信技术进行数据传递。
常见的进程间通信技术包括:
- 管道技术
- 消息队列
- 共享内存
- 信号
- 信号量
- socket
2.管道技术
在shell管道中,第一个进程的输出可作为第二个进程参数输入,这样沿着管道命令传递下去。例如在Linux操作系统中ps -aux | grep java
,|
命令符号就是管道。管道的特点是单工读写,也就是说数据传递是单向的,并且管道技术是进程通信手段里效率相对低下的。
2.1 匿名管道 pipe
- 单工通信
- 通信的进程必须是有亲缘关系
- 管道创建时有2个文件描述符,分别指向读管道和写管道
- 生命周期跟随进程
2.2 命名管道 fifo
- `mkfifo`命令创建
- 文件系统可见,存在于内存
- 通信进程无需亲缘关系
- 单工通信