<a href="http://www.cnblogs.com/hoys/archive/2012/08/19/2646377.html" target="_blank">http://www.cnblogs.com/hoys/archive/2012/08/19/2646377.html</a>
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler));
int sigaction(int signum,const struct sigaction *act,struct sigaction *oldact));
sigaction函數用于改變程序接收到特定信号後的行為。該函數的第一個參數為信号的值,可以為除SIGKILL及SIGSTOP外的任何一個特定有效的信号(為這兩個信号定義自己的處理函數,将導緻信号安裝錯誤)。第二個參數是指向結構sigaction的一個執行個體的指針,在結構sigaction的執行個體中,指定了對特定信号的處理,可以為空,程序會以預設方式對信号處理;第三個參數oldact指向的對象用來儲存傳回的原來對相應信号的處理,可指定oldact為NULL。如果把第二、第三個參數都設為NULL,那麼該函數可用于檢查信号的有效性。
SA_NODEFER: 一般情況下, 當信号處理函數運作時,核心将阻塞該給定信号。但是如果設定了 SA_NODEFER标記, 那麼在該信号處理函數運作時,核心将不會阻塞該信号
SA_RESETHAND:當使用者注冊的信号處理函數被執行過一次後,該信号的處理函數被設為系統預設的處理函數。
SA_SIGINFO 提供附加資訊,一個指向siginfo結構的指針以及一個指向程序上下文辨別符的指針
發送信号的主要函數有:kill()、raise()、 sigqueue()、alarm()、setitimer()以及abort()。