进程信号掩码处理

转载 2013年12月06日 09:38:14
int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oldset);

3函数说明

一个进程的信号屏蔽字规定了当前阻塞而不能递送给该进程的信号集。sigprocmask()可以用来检测或改变目前的信号屏蔽字,其操作依参数how来决定,如果参数oldset不是NULL指针,那么目前的信号屏蔽字会由此指针返回。如果set是一个非空指针,则参数how指示如何修改当前信号屏蔽字。每个进程都有一个用来描述哪些信号递送到进程时将被阻塞的信号集,该信号集中的所有信号在递送到进程后都将被阻塞。
参数how:
SIG_BLOCK
该进程新的信号屏蔽字是其当前信号屏蔽字和set指向信号集的并集。set包含了我
们希望阻塞的附加信号。
SIG_UNBLOCK
该进程新的信号屏蔽字是其当前信号屏蔽字和set所指向信号集的补集的交集。set包含了
我们希望解除阻塞的信号.
SIG_SETMASK
该进程新的信号屏蔽是set指向的值
除SIG_SETMASK外,如果set是个空指针,则不改变该进程的信号屏蔽字,how的值也无意义。
SIG_SETMASK与set空指针结合使用,即清空所有屏蔽的信号。

返回值

执行成功返回0,失败返回-1。

错误代码

EFAULT
参数set,oldset指针地址无法存取
EINTR
此调用被中断


对进程信号掩码进行处理。


sigfillset()用来将参数set信号集初始化,然后把所有的信号加入到此信号集里即将所有的信号标志位置为1,屏蔽所有的信号。它是一个宏实现,如下所示:
#define sigfillset(ptr) ( *(ptr) = ~(sigset_t)0, 0)
因为函数sigfillset必须返回0,所以使用C语言里面的逗号运算符,它将逗号运算符后的值做为表达式的值返回。函数在执行成功时则返回0;如果有错误则返回-1,并设置errno的值,如果errno的值为EFAULT,则表示参数set指针地址无法存取。

相关文章推荐

信号掩码——The signal mask

一. linux内部用一个128个字节(多个unsigned long)的结构(sigset_t)表示信号的掩码,在i386平台上就是128/4=32个long,每位对应一个信号的掩码,最大支持128...

对信号掩码和信号集进行操作

每个进程都有一个信号掩码,它给出了当前进程

用mask掩码处理图片,Mat::copyTo函数第一个用于输出的传入参数不能是原图片

例如src.copyTo(src,mask)是绝对不能成功的。原本只想把理由粗略说一下,但是后来想一想看一看源代码还是有好处的,于是去源代码里面看了看,怎么知道由于本人的过于才疏学浅,就这么一看就看了...
  • jdpshq
  • jdpshq
  • 2013-06-02 18:13
  • 10219

Linux系统编程——进程间通信:信号中断处理

什么是信号? 信号是 Linux 进程间通信的最古老的方式。信号是软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式 。信号可以导致一个正在运行的进程被另一个正在运行的异步进程...

Linux进程间的通信——信号处理

1、实现两个程序mysignal、mycontrl,mycontrl给mysignal发送SIGINT信号, 控制mysignal是否在屏幕打印“hello”字符串。

semget函数 semopt 采用信号量处理多进程互斥同步

转自: http://blog.csdn.net/wbj1234566/article/details/2256629 采用信号量处理多进程互斥同步        信号量与消息类似,也是...
  • hcwzq
  • hcwzq
  • 2011-08-01 21:25
  • 419

Linux C编程--进程间通信(IPC)2--信号处理函数

本文将对两个信号处理函数进行介绍 1.signal 2.sigaction 1.signal signal(设置信号处理方式) 相关函数  sigaction,kill,rai...

linux下c/c++实例之四父检测子进程和信号处理

一、简介       Linux下fork创建子进程执行程序,而父进程检测子进程的执行过程并处理部分信号,当出现段错误生成core文件时被重新命名,以便能随时通过时间调试core。 二、详解 1...

网络编程(13)—— 利用信号处理函数signal和sigaction销毁僵尸进程

linux中的信号处理类似于windows中的消息处理,原理是利用回调函数进行信号处理器和信号的关联。 一、signal函数 signal函数的原型如下: #include typedef vo...

Linux系统编程——进程间通信:信号中断处理

信号是 Linux 进程间通信的最古老的方式。信号是软件中断,它是在软件层次上对中断机制的一种模拟。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。 “中断”在我...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)