进程信号掩码处理
int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oldset);
除SIG_SETMASK外,如果set是个空指针,则不改变该进程的信号屏蔽字,how的值也无意义。
SIG_SETMASK与set空指针结合使用,即清空所有屏蔽的信号。
3函数说明
一个进程的信号屏蔽字规定了当前阻塞而不能递送给该进程的信号集。sigprocmask()可以用来检测或改变目前的信号屏蔽字,其操作依参数how来决定,如果参数oldset不是NULL指针,那么目前的信号屏蔽字会由此指针返回。如果set是一个非空指针,则参数how指示如何修改当前信号屏蔽字。每个进程都有一个用来描述哪些信号递送到进程时将被阻塞的信号集,该信号集中的所有信号在递送到进程后都将被阻塞。 参数how:SIG_BLOCK | 该进程新的信号屏蔽字是其当前信号屏蔽字和set指向信号集的并集。set包含了我 们希望阻塞的附加信号。 |
SIG_UNBLOCK | 该进程新的信号屏蔽字是其当前信号屏蔽字和set所指向信号集的补集的交集。set包含了 我们希望解除阻塞的信号. |
SIG_SETMASK | 该进程新的信号屏蔽是set指向的值 |
返回值
执行成功返回0,失败返回-1。错误代码
EFAULT | 参数set,oldset指针地址无法存取 |
EINTR |
此调用被中断
|
对进程信号掩码进行处理。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 信号的阻塞
- 下一篇: Android 数据储存的方式之本地数据库储存