我的代码有问题..
我需要等待(sigwait
)一个进程,直到到达两个信号SIGUSR1
/ SIGUSR2
(也许我可以使用sigalrm
来捕获信号?)< / p>
#include <signal.h>
#include <stdio.h>
int main()
{
sigset_t set;
int sig;
sigemptyset(&set);
sigaddset(&set, SIGUSR1);
sigaddset(&set, SIGUSR2);
sigprocmask(SIG_BLOCK, &set, NULL);
sigwait(&set, &sig);
printf("Got signal %d\n", sig);
/*need to set Sigalrm?*/
return 0;
}
答案 0 :(得分:1)
传递select()
管道的读取端。捕获信号时,写入管道。这将导致select()
返回并继续执行。