2014-08-30 70 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