package main
import (
"fmt"
"os"
"os/signal"
)func main()
}()//阻塞
c := make(chan os.signal, 1)
//當前對os.kill 和 os.interrupt (ctrl+c)
signal.notify(c, os.kill, os.interrupt)
//一旦有os.kill 和 os.interrupt訊號過來,此時channel就有資料可讀,否則就阻塞
sig := <-c
fmt.println(sig)
}
這個程序,用kill -2訊號是殺不死的,會被遮蔽,只有用kill -9是不可遮蔽中斷。 訊號遮蔽字
訊號遮蔽字是指乙個程序中當前阻塞而不能夠遞送給該程序的訊號集。訊號集則是乙個能表示多個訊號的集合的一種資料型別,為sigset t。與訊號集設定相關的函式有如下幾個 cpp view plain copy font size 18px include 下列四個函式成功返回0,出錯返回 1 int s...
linux 訊號遮蔽
include include include include include include sigemptyset newmask 獲取空遮蔽訊號集 sigfillset newmask 獲取遮蔽了所有訊號的遮蔽訊號集,除了那兩個sigkill sigstop sigpending pendma...
訊號遮蔽pending
實際執 行訊號的處理動作稱為訊號遞 達 delivery 實際的處理方式有三種。1 忽略帶訊號 2 預設處理動作 3 自定義處理動作 訊號從產 生到遞達之間的狀態,稱為訊號未決 pending 程序可以選擇阻塞 block 某個訊號。被阻塞的訊號產 生時將保持在未決狀態,直到程序解除對此訊號的阻塞,...