APUE讀書筆記-第十章-信號

  1. 產生信號的五種方式
    • 用戶按某些終端鍵
    • 硬件異常
    • 進程調用kill函數
    • 用戶使用kill命令
    • 檢測到某種軟件條件已經發生
  2. 處理信號的三種方式
    • 忽略(SIGKILL,SIGSTOP不能被忽略)
    • 捕捉(SIGKILL,SIGSTOP不能被捕捉)
    • 執行系統默認動作
  3. 大多數Unix系統調試程序用core文件檢查進程終止時的狀態
  4. exec函數將原先設置爲要捕捉的信號都更改爲默認動作,其他信號的狀態不變(一個進程原先要捕捉的信號,當其執行一個新程序後就不能再捕捉了,因爲信號捕捉函數的地址很可能在所執行的新程序文件中已無意義)
  5. 在signal函數使用中,不改變信號的處理方式就不能確定信號的當前處理方式
  6. 子進程繼承父進程的信號處理方式,因爲子進程複製了父進程的內存映像,所以信號捕捉函數的地址在子進程中是有意義的
  7. 不可重入函數
    • 使用靜態數據結構
    • 調用malloc或free
    • 是標準I/O函數,標準I/O庫的很多實現都以不可重入的方式使用全局數據結構
  8. 在信號處理程序中調用可重入函數時,應在調用前保存errno,調用後恢復errno
  9. 除非支持POSIX.1實時擴展,否則大多數UNIX並不對信號排隊,而是隻遞送該信號一次
  10. 在信號產生(generation)和遞送(delivery)之間的時間間隔內,稱信號是未決的(pending)
  11. 如果是非超級用戶,基本規則是發送者的實際用戶ID或有效用戶ID必須等於接收者的實際用戶ID或有效用戶ID;特例:被髮送的信號爲SIGCONT,進程可將其發給屬於同一會話的任一其他進程
  12. 12.
發佈了48 篇原創文章 · 獲贊 17 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章