#include
void catch()
{
printf("catch SIGUSR1\n");
}
main()
{
sigset_t mask;
int pid;
sigemptyset(&mask);
sigaddset(&mask,SIGALRM);
signal(SIGUSR1,catch);
pid=fork();
switch(pid)
{
case -1: perror("Error");break;
case 0: alarm(2);
sigsuspend(&mask);break;
用&mask来暂代替信号屏蔽,反回后恢复到之前的值
设SIGALRM为阻塞,并等待其它信号来临
default: sleep(3);
kill(pid,SIGUSR1);break;
}
}
阅读(954) | 评论(3) | 转发(0) |