Linux 信号随笔
POSIX标准定义了数据类型sigset_t来表示信号集。
每一个进程都有一个信号屏蔽码,它规定了当前阻塞而不能递送给该进程的信号集。函数sigprocmask可以检测或者更改进程的信号屏蔽码。
int sigprocmask(int how, const sigset_t * set, sigset_t * oldset);
如果oldset为非空指针,则该进程之前的信号屏蔽码通过oldset返回。
如果set为非空指针,则该函数将根据how来修改信号当前的屏蔽码,how的取值如下:
(1)SIG_BLOCK:将进程新的信号屏蔽码设置成为当前信号屏蔽码和set指向信号集的并集。
(2)SIG_UNBLOC:将进程新的信号屏蔽码设置成为当前信号屏蔽码中,删除set所指向的信号集,即set指针包含着我们希望解除阻塞的信号。即使对当前信号屏蔽码中不存在的信号使用SIG_UNBLOCK也是合法的。
(3)SIG_SETMASK:将进程新的信号屏蔽码设置成为set所指向的。
2. sigpending函数
int sigpengding(sigset_t *set);用来获取当前未决的信号集。
3. sigsuspend函数
int sigsuspend(const sigset_t * mask);将进程屏蔽码设置成为mask,然后与pause函数一样,等待信号的发生并执行完信号处理函数。信号处理函数执行完后再把进程的信号屏蔽码设置为原来的屏蔽字,然后sigsuspend函数才返回。sigsuspeng保证改变进程的屏蔽码和将进程挂起等待信号的操作是原子操作。
转载于:https://www.cnblogs.com/nathan-1988/archive/2012/06/25/2560872.html
总结
以上是生活随笔为你收集整理的Linux 信号随笔的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: word 2010 从第三页开始设置页码
- 下一篇: 【Linux】ubuntu下词典软件Go