2022年2022年进程间通信的方式 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年2022年进程间通信的方式 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年进程间通信的方式 .pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、现在最常用的进程间通信的方式有:信号,信号量,消息队列,共享内存。所谓进程通信,就是不同进程之间进行一些接触 ,这种接触有简单,也有复杂。机制不同,复杂度也不一样。通信是一个广义上的意义,不仅仅指传递一些massege 。他们的使用方法是基本相同的,所以只要掌握了一种的使用方法,然后记住其他的使用方法就可以了。1 信号在我学习的内容中,主要接触了信号来实现同步的机制,据说信号也可以用来做其它的事情,但是我还不知道做什么。信号和信号量是不同的,他们虽然都可用来实现同步和互斥,但前者是使用信号处理器来进行的,后者是使用P,V 操作来实现的。使用信号要先知道有哪些信号,在Linux下有31 个需要记
2、住的通用信号,据说也是systemV 中最常用的那些。这里略。1 1 信号相关函数:#include int sigaction(int signo, const struct sigaction *act, struct sigaction *oact); 该函数用来为进程安装信号处理器,struct sigaction 数据是用来保存信号处理器的相关信息。#include int sigemptyset(sigset_t *set); 将信号集合清空。int sigfillset(sigset_t *set); 将信号集合设置成包含所有的信号。在对信号进行操作以前一定要对信号集进行初始化。
3、int sigaddset(sigset_t *set, int signo); 向信号集中加入signo 对应的新信号。int sigdelset(sigset_t *set, int signo); 从信号集中删除signo 对应的一个信号。int sigismember(const sigset_t *set, int signo); 判断某个信号是否在信号集中。返回1 则在, 0 则不在。#include int sigprocmask(int how,const sigset_t *set, sigset_t *oset); 用来设置进程的信号屏蔽码。信号屏蔽码可以用来在某段时间内阻
4、塞一些信号集中的信号,如果信号不在信号集中,就不必讨论它,因为肯定不响应,是否能生成也不肯定,我没有做过试验。12 我所理解的使用信号机制的方法:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 使用信号, 主要做的事情就是信号处理器的工作,这里面是你想做的事情。就像中断处理函数一样。在使用信号以前,首先要初始化信号集,只有在信号集里面的信号才会被考虑。有两种方法可以初始化信号集,一种是设置空信号集,一种是将所有的信号都加到信号集
5、中。如果你自己想要的信号集不是这两种,可以在初始化了以后通过添加和删除信号进行定制。如果在进程执行的一段时间内不想对某些信号进行响应,则可以使用sigprocmask 对当前的信号集中的一些信号进行阻塞,稍后再执行。当你将信号集设置完毕后,在让他工作之前需要安装信号处理器。安装信号处理器可以实现这几个功能:指定信号处理函数的入口;指定信号屏蔽集合;指定信号处理器的一些标志。所谓信号处理器, 就是指定了一些处理方法,关键在于安装信号处理器,这是使正确的信号进行正确的处理关键。在安装的时候,一定要对特定的信号赋予正确的信号处理函数。我不知道不同进程之间的信号处理器能否混用,但是像一个特定的进程中有
6、多少个信号处理器这样的问题是不能提的。因为信号处理器是一个概念,他针对的是信号,就是说如果你指定了一个数据结构,用它来存储针对某个信号的处理信息,那么安装信号处理器就是赋予这个数据结构一些相关信息,使用信号处理器就是用这个数据结构存储的信息来组织一种机制当发生这个信号的时候会做一些你实现设置好的处理。但是如果区分不同进程中对同一个信号的不同处理器?我想处理器可能只对核它所属的进程有关的信号进行响应,但是如果是这样的话,那这是怎么实现的呢?不过有一点是可以知道的,那就是每一个信号都有一个信号处理器(确定的),可以动过安装信号处理器来指定她的行为。信号处理器由他自己的信息存储区域(我不知道在什么地
7、方) , 但是可以通过向sigaction 类型的数据结构向信号处理器的信息存储区域中传递信息。这个数据结构由一个就可以了,因为它只是临时传递数据的载体。但是 sigpromask 和信号处理器里面的sigmask 是不一样的, 前者是在进程当前流程设置信号屏蔽, 后者是指定在信号处理器作用时需要屏蔽掉的信号。例如, 在设置某个特定信号的信号处理器时,我们当然不能让它的信号处理器工作了,因为还没有设置完吗,这是我们可以使用sigprocmask 来让当前的流程开始阻塞该信号,当设置完信号处理器以后,再用sigprocmask 恢复被阻塞的信号。而以后再接收到该信号时,信号处理器就可以工作了。我
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年进程间通信的方式 2022 进程 通信 方式
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内