进程间通信:管道 信号量 消息队列 共享内存 套接字
管道
有名管道
mkfifo mkfifo()
无名管道
pipe()
区别:有名可以在任意两个进程间通信,无名可以在父子进程间进行通信
管道通信方式:半双工
通信方式包括:单工 半双工 全双工
写入数据:写在内存中
管道为空 读read阻塞
管道未满 写write阻塞
关闭读端:写操作引发异常,收到SIGPIPE信号
关闭写端 :读n=read() ,n为0
信号量
特殊的变量,原子加一(v 释放资源),原子减一(p 获取资源)
什么是pv操作
二值信号量 取值 0,1;
计数信号量 值可以大于1
临界资源:同一时刻只允许一个进程访问的资源
临界区: 访问临界资源的代码段
有信号量为什么还要互斥锁 (信号量与互斥锁有什么区别)
共享内存
《linux内核csdn》第六章