操作系统复习——进程通信
1. 进程之间通信的方式有:信号,管道 https://www.cnblogs.com/Carrie-0173/p/6425202.html ,消息队列,共享内存。较熟悉一下两种。
2. 信号通信机制:
信号可以在任何时候发送给某一进程,而无须知道该进程的状态。如果进程未处于执行状态则信号被内核保存,知道恢复执行然后传递给它。在Linux中有几十种信号分别代表着不同的含义,依靠着信号值的不同来区别。
比方说有raise 函数,kill 函数,pause 函数,sigsuspend 函数。
并且用户可以通过signal 函数来修改信号的相应动作。
3. 消息队列通信机制
消息队列就是一个消息的链表,是一系列保存在内核中消息的列表。用户进程可以向消息队列添加消息,也可以向消息队列读取消息。
消息队列与管道通信相比,其优势是对每个消息指定特定的消息类型,接收的时候不需要按照队列次序,而是可以根据自定义条件接收特定类型的消息。
可以把消息看做一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息,对消息队列有读权限的进程可以从消息队列中读取消息。
消息队列常用的一些函数有:msgget 创建或者打开消息队列,msgsnd 添加消息,msgrcv 读取消息,msgctl 控制消息队列,ftok 由于文件路径工程ID生成的标准key。
进程间通过消息队列通信,主要是:创建或打开消息队列,添加消息,读取消息和控制消息队列。