1
我必須編寫一個函數來檢索某些有關某些信號處理狀態的信息。也就是說,如果有特定的處理程序或信號被忽略,被阻止的信號和激活的標誌。爲了做到這一點,我使用sigaction
函數。這裏是我的代碼:獲取有關信號處理的信息
void show_signal_info(int signal_number){
struct sigaction s;
int nomask=1;
if(sigaction(signal_number, NULL, &s) == -1){
perror("Error getting information of signal");
}else{
printf("Signal name: %s\n",signal_name(signal_number));
printf("Signal mask: ");
for(i=0; i<32; i++){
if(sigismember(s.sa_mask,i) == 1)
printf("%s ",signal_name(i);
printf("%s",nomask ? "None\n" : "\n");
if(s.sa_handler == SIG_DFL)
printf("Default\n");
else if (s.sa_handler == SIG_IGN)
printf("Ignored\n");
else
printf("Handler\n");
[...]
}
}
的問題是,我不知道如何檢查是與s.sa_flags什麼標誌?有一些宏可以與wait()
函數一起使用,或者有其他方法可以使用它們嗎?
好主意。非常感謝! – chavaone