进程信号掩码处理

转载 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指针地址无法存取。

ip与掩码处理

下列程序有两个实用功能: 1.ip转32位char [] 2.给一个ip和一对,判断是否命中。 class WhiteIpMask { public static Set set = new ...
  • chuchus
  • chuchus
  • 2015年11月10日 14:48
  • 476

掩码操作(& | >>> <<)

2进制 int n = 45; System.out.println(Integer.toBinaryString(n)); 计算机的内部(Java)只有2进制数据, 在显示的时候编程语言提供A...

信号掩码——The signal mask

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

pthread_sigmask 控制线程的信号掩码

示例1: /* 示例一:屏蔽信号SIGINT 来源:http://www.leoox.com/?p=321 编译:gcc pthread_sigmask1.c -lpthread ...

信号、信号集、信号掩码、信号处理

一、信号的概念:信号时发给进程的特殊消息,当进程收到xinhai
  • vvvbird
  • vvvbird
  • 2014年11月23日 11:41
  • 911

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

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

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

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

oracle 11.2 rac 更改子网掩码引起的haip无法启动的处理过程

今天在公司的微信群里hc-edu tech-support里边一个老学员说他们的rac数据库不能启动,下边是处理的过程 1.使用crsctl stat res -t -init如下 ...

linux进程间通信方式之信号处理sigaction

#include #include #include #include #include #include #include #include #include #include

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

什么是信号? 信号是 Linux 进程间通信的最古老的方式。信号是软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式 。信号可以导致一个正在运行的进程被另一个正在运行的异步进...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:进程信号掩码处理
举报原因:
原因补充:

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