进程信号掩码处理

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

Linux信号掩码和信号处理函数

1、信号掩码——被阻塞的信号集 每个进程都有一个用来描述哪些信号传送来将被阻塞的信号集,如果某种信号在某个进程的阻塞信号集中,则传送到该进程的此种信号将会被阻塞。当前被进程阻塞的信号集也叫信号掩码,类...
  • a364174171
  • a364174171
  • 2015年10月12日 14:05
  • 302

Linux——信号掩码(signal mask)

     在POSIX下,每个进程有一个信号掩码(signal mask)。简单地说,信号掩码是一个“位图”,其中每一位都对应着一种信号。如果位图中的某一位为1,就表示在执行当前信号的处理程序期...
  • zerocool777
  • zerocool777
  • 2015年07月08日 15:21
  • 1693

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

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

关于信号三种处理方式初步理解!

最近看APUE看到第十章信号,进程对信号的处理方式主要是三种: 1.忽略 2.终止 3.捕获 #include "apue.h" static void sig_int(int signo)    ...
  • u010908355
  • u010908355
  • 2016年04月13日 21:20
  • 988

ip与掩码处理

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

信号的产生以及处理方式(一)

/***************************************************************************************************...
  • ZDF0414
  • ZDF0414
  • 2016年03月31日 11:45
  • 1011

linux进程信号处理函数signal和sigaction

Linux中signal函数说明: NAME        signal - ANSI C signal handling SYNOPSIS        #include        t...
  • u010827484
  • u010827484
  • 2015年08月21日 23:18
  • 1930

linux信号掩码

1. linux内部用一个128个字节(多个unsigned long)的结构(sigset_t)表示信号的掩码,在i386平台上就是128/4=32个long,每位对应一个信号的掩码,最大支持128...
  • z1002137615
  • z1002137615
  • 2015年09月16日 14:22
  • 315

python简单程序使用signal模块处理僵死进程

程序一:未使用信号处理程序 #! /usr/bin/python import socket, os """ 简单网络程序,每次连接后派生的子进程终止后都会成为僵死进程 """ serSoc...
  • u010872995
  • u010872995
  • 2015年06月01日 15:41
  • 1566

系统如何将一个信号通知到进程

系统如何将一个信号通知到进程?参考linux内核中异步通知机制–信号处理机制小结内核给进程发送信号,是在进程所在的进程表项的信号域设置对应的信号的位。进程检查信号的时机是:进程即将从内核态返回用户态时...
  • waltonhuang
  • waltonhuang
  • 2016年08月17日 11:24
  • 2500
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:进程信号掩码处理
举报原因:
原因补充:

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