功能:
sigaction函數用于改變程序接收到特定信号後的行為。
參數
第一個參數為信号的值,可以為除SIGKILL及SIGSTOP外的任何一個特定有效的信号(為這兩個信号定義自己的處理函數,将導緻信号安裝錯誤)
第二個參數是指向結構sigaction的指針,在結構 sigaction的執行個體中,指定了對特定信号的處理,可以為空,程序會以預設方式對信号處理
第三個參數oldact指向的對象用來儲存原來對相應信号的處理,可指定oldact為NULL。
傳回值:函數成功傳回0,失敗傳回-1
sigaction結構體
第二個參數最為重要,其中包含了對指定信号的處理、信号所傳遞的資訊、信号處理函數執行過程中應屏蔽掉哪些函數等等
sa_mask選項
sa_mask specifies a mask of signals which should be blocked/** 指定一個信号集的掩碼, 在這個掩碼中的信号将要阻塞**/ (i.e., added to the signal mask of the thread in which the signal handler is invoked)
during execution of the signal handler. In addition, the signal which triggered the handler will be blocked,
unless the SA_NODEFER flag is used.
/** 在執行handler 的時候, 如果此時程序收到了sa_mask所包含的信号, 則這些信号将不會被響應, 直到handler函數執行完畢
與sigprocmask不同是: sigprocmask 是指定該程序的信号屏蔽字-> 屏蔽該信号, 不會接收該信号, 而sa_mask則是接收了該信号, 但是不會相應該信号**/
//運作截圖

sa_flags: 詳細資訊
siginfo_t結構:
功能
sigqueue是新的發送信号系統調用,主要是針對實時信号提出的支援信号帶有參數,與函數sigaction()配合使用。
和kill函數相比多了一個參數:const union sigval value(int kill(pid_t pid, int sig)),是以sigqueue()可以比kill()傳遞更多的資訊,但sigqueue()隻能向一個程序發送信号,而不能發送信号給一個程序組。
參數1是指定接收信号的程序id,參數2确定即将發送的信号;
參數3是一個聯合資料結構union sigval,指定了信号傳遞的參數,即通常所說的4位元組值。
sigval聯合體