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));
}–
部分代碼如下: 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