功能描述:設定對訊號遮蔽集內的訊號的處理方式(阻塞或不阻塞)。
遮蔽訊號
阻塞一些訊號,使程序即使接收到訊號,也不做處理。
用法:#include
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
引數:how:用於指定訊號修改的方式,可能選擇有三種
sig_block //加入訊號到程序遮蔽。
sig_unblock //從程序遮蔽裡將訊號刪除。
sig_setmask //將set的值設定為新的程序遮蔽。
set:為指向訊號集的指標,在此專指新設的訊號集,如果僅想讀取現在的遮蔽值,可將其置為null。
oldset:也是指向訊號集的指標,在此存放原來的訊號集。
返回說明:
成功執行時,返回0。失敗返回-1,errno被設為einval。
#include
#include
#include
#include
//#include <>
static void sig_quit(int signo)
int main()
sigprocmask(sig_setmask, &oldmask, null);//恢復被遮蔽的訊號sigquit
/**開始處理訊號,呼叫訊號處理函式*/
printf("sigquit unblocked\n");
sleep(5);//再次休眠5秒鐘
return (0);
}以上示例是linux redhat,
執行結果是
$./a.out
^\ /**此處使用"ctrl+\" 產生sigquit */
sigquit pending
caught sigquit 在sigprocmask返回之前處理阻塞訊號sigquit,輸出它
sigquit unblocked
^\quit (coredump)//因為已經被設定為預設值,所以再次產生sigquit 訊號,直接退出
sigprocmask系統呼叫
功能描述 設定對訊號遮蔽集內的訊號的處理方式 阻塞或不阻塞 用法 include int sigprocmask int how,const sigset t set,sigset t oldset 引數 how 用於指定訊號修改的方式,可能選擇有三種 sig block 加入訊號到程序遮蔽。sig...
關於訊號sigprocmask
sigemptyset new mask sigaddset new mask,sigquit 將訊號sigquit,新增到空訊號集new mask中 if sigprocmask sig block,new mask,old mask 把訊號sigquit給阻塞 sigemptyset zero ...
訊號sigprocmask函式
include int sigprocmask int how,const sigset t restrict set,sigset t restrict oset 返回值 若成功則返回0,若出錯則返回 1首先,若oset是非空指標,那麼程序的當前訊號遮蔽字通過oset返回。其次,若set是乙個非空...