qwidget show 是否有訊號_c++筆記(訊號集處理函式)
阿新 • • 發佈:2021-02-11
技術標籤:qwidget show 是否有訊號
訊號集
在PCB中有兩個非常重要的訊號集。一個稱為 阻塞訊號集, 一個稱為 未決訊號集
這兩個訊號集都是核心使用點陣圖機制來實現的。但作業系統不充許我們直接對其操作,而需自定義另外一個集合,藉助訊號操作函式來對PCB中這兩個訊號集進行修改。
自定義訊號集函式
為了方便對多個訊號進行處理,一個使用者程序常常需要對多個訊號做出處理,在Linux系統中引入了訊號集
訊號集是一個能表示多個訊號的資料型別
#include<signal.h> int sigemptyset(sigset_t *set); // 清空集合 int sigfillset(sigset_t *set); // 將所有訊號加入集合 int sigaddset(sigset_t *set,int signo); // 將 signo 訊號加入集合 int sigdelset(sigset_t *set,int signo); // 從 set 集合中移除 signo 訊號 int sigismember(const sigset_t *set,int signo); // 判斷訊號是否存在 // 除 sigismember 外,其餘函式中的 set 均為傳出引數 // siggroup1.c #include<stdio.h> #include<stdlib.h> #include<string.h> #include<signal.h> void show(sigset_t *s){ int i=0; for(i=1;i<32;i++){ if(sigismember(s,i)){ printf("1-"); }else{ printf("0-"); } } printf("n"); } int main(){ //定義集合 sigset_t set; //清空 sigemptyset(&set); show(&set); //將所集號加入集合 sigfillset(&set); show(&set); //將2和3移除 sigdelset(&set,SIGINT); sigdelset(&set,SIGQUIT); show(&set); //再將2加進去 sigaddset(&set,SIGINT); show(&set); return 0; } // 編譯 gcc siggroup1.c -o siggroup1 // 執行 ./siggroup1 結果如下 //