您的位置:首页 > 运维架构 > Linux

linux 信号-- 安装

2014-04-25 15:58 381 查看
1.sigaction安装:

结构sigaction定义如下:

structsigaction{

void(*sa_handler)(int);

sigset_tsa_mask;

intsa_flag;

void(*sa_sigaction)(int,siginfo_t*,void*);

};


sa_hanlder:一个带有int参数的函数指针,或者SIG_IGN(忽略),或者SIG_DFL(默认).

sa_mask:信号屏蔽字(集).当该信号处理函数返回时,屏蔽字恢复.

sa_sigaction:替代的信号处理程序,当使用了SA_SIGINFO标志时,使用该信号处理程序.

sa_flag是一个选项,主要理解三个

SA_INTERRUPT由此信号中断的系统调用不会自动重启

SA_RESTART由此信号中断的系统调用会自动重启


SA_SIGINFO提供附加信息,一个指向siginfo结构的指针以及一个指向进程上下文标识符的指针




一般的用法:



structsigactionnewaction;

newaction.sa_handler=handle;

newaction.sa_flags=0;//SA_RESTART;

sigemptyset(&newaction.sa_mask);

sigaddset(&newaction.sa_mask,12);//设置上后,处理此信号期间,不会再收到此信号

sigaction(12,&newaction,NULL);

2.signal

可以用sigaction实现:

sig_func*signal(intsigno,sig_func*func);

{

structsigactionact,oact;

act.sa_handler=func;

sigemptyset(&act.sa_mask);

act.sa_flags=0;

if(sigaction(signo,&act,&oact)<0)

returnSIG_ERR;

returnoact.sa_hanlder;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: