进程间通信 ipc :管道 信号量 消息队列 共享内存 套接字
管道:
1.有名管道 无名管道 区别?
有名可以在任意两个进程间通信,无名只能在父子进程间使用。
2.写入管道的数据在哪里?
内存中
3.管道是一个半双工的通信方式
头指针写,尾指针度,开始都在头部
使用操作
有名管道
mkfifo + name 创建管道文件 -p 大小是0,写入管道的数据在内存中
open read write close 操作管道文件
只能是 只读 或者 只写
示例:
键盘输入数据,读取数据
写端关闭,读端int n = read 返回值 n==0
读端关闭,写端 write 会触发信号 SIGPIPE
管道为空,读操作阻塞
管道为满,写操作阻塞
有名管道,需要读写两个进程同时打开才可以
无名管道
一般固定读写方向,将对应的读写关闭即可。