2016-07-01 46 views
0

我在'sigaction'之前執行了'sigemptyset',但SIGALRM被阻止。爲什麼我在sigaction之前執行了sigemptyset,但有時SIGALRM被阻止了

但是,如果我執行'sigprocmask'來取消阻塞SIGALRM,則不會阻止SIGALRM。

代碼的一部分如下:

struct sigaction sa; 
memset(& sa, 0, sizeof(sa)); 
sa.sa_handler = sigpipe_handler; 
if (sigemptyset(& sa.sa_mask) < 0) { 
    printf("sigemptyset fail! errno=%d, error info<%s>.\n", errno, strerror(errno)); 
}# 
ifdef SA_INTERRUPT sa.sa_flags |= SA_INTERRUPT;# 
endif 
if (sigaction(signum, & sa, NULL) < 0) { 
    printf("sigaction fail! errno=%d, error info<%s>.\n", errno, strerror(errno)); 
}– 
+0

部分代碼如下: struct sigaction sa; memset(&sa,0,sizeof(sa)); sa.sa_handler = sigpipe_handler;如果(sigemptyset(&sa.sa_mask)<0) {012}「 } #ifdef SA_INTERRUPT sa.sa_flags | = SA_INTERRUPT; ( 「!sigaction的失敗錯誤號=%d,誤差信息<%s> \ n」 個,錯誤號,字符串錯誤(錯誤)) #ENDIF 如果(sigaction的(正負號,&SA,NULL)<0){ 的printf ; } – Only4today

回答

0

似乎SIGALRM默認屏蔽?

+0

這不是一個答案。這應該被添加爲評論。 – Andrej

相關問題