信号的概念


这个函数可以用来,重新注册我们的block位图,如果oset是非空指针,则读取进程的当前信号屏蔽字通过oset参数传出。如果set是非空指针,则 更改进程的信 号屏蔽字,参数how指示如何更改。如果oset和set都是非空指针,则先将原来的信号 屏蔽字备份到oset里,然后 根据set和how参数更改信号屏蔽字。假设当前的信号屏蔽字为mask,下表说明了how参数的可选值。
how的选项

其实我们一般都是用的sig_setmask这个参数,毕竟这个学习成本最低了。
操作系统给我提供了一个类型sigset_t就是用来搞block位图的。他是配合着sigemptyset,sigaddset函数使用的

讯享网
sigemptyset函数用于初始化一个信号集,将信号集中的所有信号都清空,其中,set为指向信号集的指针。函数成功执行时,返回0;否则,返回-1。
讯享网
sigaddset函数用于将指定的信号添加到信号集中,其中,set为指向信号集的指针,signum为待添加的信号编号。函数成功执行时,返回0;否则,返回-1。
sigpending函数用于获取当前进程未决的信号集,即已经产生但还未被处理的信号集,其中,set为指向信号集的指针。函数成功执行时,返回0;否则,返回-1。其实就是用来手机pending表。
讯享网
我们将2号信号阻塞过后,我们ctrl+c就会使进程接收信号,但此时2号为阻塞,当十秒过后阻塞结束,就会执行信号的函数,然后pending表xin’da
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/168282.html