2014-08-30 74 views
1

我有这个代码的问题..C:需要暂停过程,直到SIGALRM

我需要把在等待(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; 
} 
+0

你想等待,直到你* * *信号?或者只是其中的一个? – 2014-08-30 14:44:37

+0

只有一个!谢谢.. – user3121134 2014-08-30 14:48:31

+0

如果到达sigusr1或sigusr2,这些并不重要,谢谢! – user3121134 2014-08-31 09:27:06

回答

1

通过select()管道的读取结束。当你捕捉到信号时,写入管道。这将导致select()返回并继续执行。

+0

你能解释一下吗? – user3121134 2014-08-31 08:40:25