sigprocmask

功能描述:
检测或修改信号屏蔽字


用 法:
#include
< signal.h >

int sigprocmask( int how, const sigset_t * set , sigset_t * oldset);

参 数:
how:用于指定信号修改的方式,可能选择有三种

SIG_BLOCK        
//加入信号到进程屏蔽。
SIG_UNBLOCK    //从进程屏蔽里将信号 删除。
SIG_SETMASK    //将set的值设定为 新的进程屏蔽。


set :为指向信号集的指针,在此专指新设的信号 集,如果仅想读取现在的屏蔽值,可将其置为NULL。
oldset:也是指向信号集的指针,在此存放原来的信号集。


返回说明:
成 功执行时,返回0。失败返回
- 1 ,errno被设为EINVAL。

 

 

举例:

 

#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> int main() { while(1); return 1; }

编译、运行程序,我们 ctrl+c ,程序就退出了

 

 

我们修改代码如下:

#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> int main() { sigset_t set; sigemptyset(&set); sigaddset(&set, SIGINT); sigprocmask(SIG_BLOCK, &set, NULL); while(1); return 1; }

编译、运行程序,我 们 ctrl+c ,程序没有退出。

 

分析:

      我们在第二个列子中,把sigint信号给屏蔽了,所有当我ctrl+c的时候,程序是无法处理这个信号的,也就没有退出


 


你可能感兴趣的:(c,null)