进程间通信
一 进程间通信 -- 管道
- mkfifo test 创建管道文件
- 匿名管道和命名管道:
- 匿名管道:匿名管道主要利用了,创建子进程的时候会把父进程的文件描述符表拷贝一份这个特征,通过这个特征,父子进程就看到了一个公共的资源—管道,并同时拥有对该管道腹泻的权利,那么一方读,一方写,就可以完成进程之间的通信了。
- 命名管道:既然管道也是一个文件,那么肯定有大小上限,这也是其一个缺点,大小有限的
二 消息队列
-
管道是一个文件,而消息队列是一个数据结构
ipcs -q #查看消息队列状态
ipcrm -q 21323 #销毁
三 信号量
-
信号量用于进程间的同步和互斥
- 同步:处理竞争,安排进程执行的顺序
- 互斥:互斥访问不可共享资源
- 竞争:并发进程竞争使用同一个资源时
-
信号量的创建:
-
信号量的初始化
-
信号量操作:
- P操作
- V操作
-
信号量的删除
四 共享内存
- 创建共享存储区:
ipcs -m #查看当前的共享存储区 - 共享存储区的链接
- 共享存储区的断开
- 删除共享存储区
五 信号
-
信号是怎么产生的:
- 硬件产生的
- 进程发送的
- 异常
- kill -l #查看所有的信号
-
信号处理的方式:
- 忽略
- 默认处理
- 自定义处理
-
相关函数解析:
-
阻塞信号
网友评论