功能描述:設定對訊號遮蔽集內的訊號的處理方式(阻塞或不阻塞)。
用法:#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 用於指定訊號修改的方式,可能...
關於訊號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是乙個非空...