Linux软件编程:进程与线程(进程(消息队列、共享内存、信号灯))
一、消息队列
(一)IPC对象
1.IPC对象可以理解为一种内存文件
2.IPC对象在操作系统关闭的情况下数据被回收掉
3.IPC对象可以通过文件系统来定位
4.每个IPC对象可以创建一个消息队列、一个共享内存、一个信号灯
(二)IPC对象操作命令
1.查看IPC对象
ipcs
ipcs -q/m/s(查看消息队列/共享内存/信号灯)
2.删除IPC对象
ipcrm
ipcrm -q/m/s(消息队列/共享内存/信号灯的ID)
ipcrm -Q/M/S(IPC对象的key值)
(三)操作流程
1.创建/打开消息队列
2.向消息队列中发送消息
3.从消息队列中接收消息
(四)函数接口
1.ftok
2.msgget
3.msgsnd
4.msgrcv
5.msgctl
二、共享内存
(一)概念
1.进程空间是独立的,共享内存是开辟一端内核空间,进程都映射到这一片空间上,实现空间的共享
2.进程间通信最高效形式
(二)操作方法
1.创建IPC对象名称
2.创建共享内存
3.将进程空间地址映射到共享内存空间中
4.读写共享内存空间实现进程间通信
5.解除共享内存映射
6.删除共享内存
(三)函数接口
1.ftok
2.shmget
3.shmat
4.shmdt
5.shmctl
三、信号灯
(一)概念
1.搭配共享内存实现进程间通信
2.主要用于多进程任务
3.信号灯是一组信号量,即信号量数组
4.用于线程间通信的信号量成为无名信号量,信号灯是有名信号量
(二)信号灯操作
1.创建信号量数组
2.申请信号量
3.释放信号量
4.信号量销毁
(三)函数接口
1.ftok
2.semget
3.semop
4.semctl