这段代码有问题..
我需要等待 (sigwait
) 一个过程,直到到达两个信号 SIGUSR1
/SIGUSR2
(也许我可以使用 sigalrm
捕捉信号?)
#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;
}
最佳答案
将管道的读取端传递给 select()
。当您捕获到信号时,写入管道。这将导致 select()
返回并继续执行。
关于C: 需要暂停一个进程直到 sigalrm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25583545/