当前位置: 技术问答>linux和unix
无法阻塞信号的问题(附程序)
来源: 互联网 发布时间:2016-05-30
本文导语: #include #include #include void myHandler(int sig); int main(int argc,char *argv[]) { struct sigaction act, oact; sigset_t oldmask; act.sa_handler = myHandler; sigfillset(&act.sa_mask);/////////////想用...
#include
#include
#include
void myHandler(int sig);
int main(int argc,char *argv[])
{
struct sigaction act, oact;
sigset_t oldmask;
act.sa_handler = myHandler;
sigfillset(&act.sa_mask);/////////////想用这行代码来阻塞SIGUSR1,但是不行,错在何处?请高手指教
act.sa_flags = 0;
sigaction(SIGUSR1, &act, &oact);
while (1)
{
printf("Hello world.n");
pause();
}
}
void myHandler(int sig)
{
printf("I got signal: %d.n", sig);
}
}
#include
#include
void myHandler(int sig);
int main(int argc,char *argv[])
{
struct sigaction act, oact;
sigset_t oldmask;
act.sa_handler = myHandler;
sigfillset(&act.sa_mask);/////////////想用这行代码来阻塞SIGUSR1,但是不行,错在何处?请高手指教
act.sa_flags = 0;
sigaction(SIGUSR1, &act, &oact);
while (1)
{
printf("Hello world.n");
pause();
}
}
void myHandler(int sig)
{
printf("I got signal: %d.n", sig);
}
}
|
sigfillset(&act.sa_mask);
去掉看看,我记得sigaction缺省是阻塞的.
去掉看看,我记得sigaction缺省是阻塞的.
|
sigfillset(将所有信号加入至信号集)
相关函数 sigempty,sigaddset,sigdelset,sigismember
表头文件 #include
定义函数 int sigfillset(sigset_t * set);
函数说明 sigfillset()用来将参数set信号集初始化,然后把所有的信号加入到此信号集里。
返回值 执行成功则返回0,如果有错误则返回-1。
附加说明 EFAULT 参数set指针地址无法存取
而真正阻塞的函数是signal()函数,它会阻塞到它等待的信号有回应才会进行相应的处理
相关函数 sigempty,sigaddset,sigdelset,sigismember
表头文件 #include
定义函数 int sigfillset(sigset_t * set);
函数说明 sigfillset()用来将参数set信号集初始化,然后把所有的信号加入到此信号集里。
返回值 执行成功则返回0,如果有错误则返回-1。
附加说明 EFAULT 参数set指针地址无法存取
而真正阻塞的函数是signal()函数,它会阻塞到它等待的信号有回应才会进行相应的处理