信号屏蔽问题(屏蔽不了信号)
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
void sigusrl_handler(int signo)
{
printf("catch SIGUSR1\n");
}
int main()
{
sigset_t set;
if(signal(SIGUSR1,sigusrl_handler)==SIG_ERR)
{
perror("can't set handler for SIGUSRL");
exit(1);
}
sigemptyset(&set);
sigaddset(&set,SIGUSR1-1);
if(sigismember(&set,SIGUSR1-1)==1)
{
printf("sucess\n");
}
if(sigprocmask(SIG_BLOCK,&set,NULL)==-1)
{
perror("fail to set signal-mask");
exit(1);
}
sleep(40);
return 0;
}
运行后:
sucess
当我在另一个终端里:
kill --USR1 8643
结果立即:
catch SIGUSR1
也就是说:根本就没有屏蔽信号,不知为什么?请高手指教!