sigprocmask系統呼叫

2021-05-28 09:41:26 字數 1032 閱讀 8377

功能描述:設定對訊號遮蔽集內的訊號的處理方式(阻塞或不阻塞)。

用法:#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是乙個非空...