当前位置: 技术问答>linux和unix
sigaction如何设置信号执行函数时屏蔽和屏蔽本身信号.
来源: 互联网 发布时间:2016-08-17
本文导语: 我想做个测试例题,如何设置sa_mask让信号函数执行时,可以屏蔽和不屏蔽本身信号. 测试代码如下: #include #include #include #include #include #include #include #include static void catch_signa...
我想做个测试例题,如何设置sa_mask让信号函数执行时,可以屏蔽和不屏蔽本身信号.
测试代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
static void catch_signal(int);
int main(int argc, char* argv[])
{
struct sigaction act;
struct itimerval value;
act.sa_handler = catch_signal; //设置信号处理函数
act.sa_flags = 0; //设置信号处理标志位
sigemptyset(&act.sa_mask); //清空信号集,信号函数执行过程不屏蔽本身信号 ==1==
sigaction(SIGALRM,&act,NULL); //捕获定时信号
//设置一个定时器,1s发送一个定时信号
value.it_value.tv_sec=1;
value.it_value.tv_usec=0;
value.it_interval.tv_sec = 1;
value.it_interval.tv_usec = 0;
if(setitimer(ITIMER_REAL,&value,NULL)
测试代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
static void catch_signal(int);
int main(int argc, char* argv[])
{
struct sigaction act;
struct itimerval value;
act.sa_handler = catch_signal; //设置信号处理函数
act.sa_flags = 0; //设置信号处理标志位
sigemptyset(&act.sa_mask); //清空信号集,信号函数执行过程不屏蔽本身信号 ==1==
sigaction(SIGALRM,&act,NULL); //捕获定时信号
//设置一个定时器,1s发送一个定时信号
value.it_value.tv_sec=1;
value.it_value.tv_usec=0;
value.it_interval.tv_sec = 1;
value.it_interval.tv_usec = 0;
if(setitimer(ITIMER_REAL,&value,NULL)