Signals

為什麼 SIGUSR1 會導致程序終止?

  • May 13, 2012

我對其他問題的評論感到驚訝:

在 USR1 啟動後過早發送 dd 信號(即在 bash 腳本中,啟動它之後的行)實際上會終止它

誰能解釋為什麼

每個信號都有一個“預設處置”——程序在接收到該信號時預設執行的操作。手冊頁中有一個表格signal(7)列出了它們:

Signal     Value     Action   Comment
──────────────────────────────────────────────────────────────────────
...
SIGUSR1   30,10,16    Term    User-defined signal 1
SIGUSR2   31,12,17    Term    User-defined signal 2

SIGUSR1並且SIGUSR2兩者都有預設操作Term——程序終止。dd註冊一個處理程序來攔截信號並用它做一些有用的事情,但是如果你的信號太快,它還沒有時間註冊那個處理程序,所以預設的操作會發生

引用自:https://unix.stackexchange.com/questions/38589