回覆列表
  • 1 # 年輪978865

    signal是一個系統呼叫。是一種特殊的中斷,當某種特定的“軟體中斷”發生時。用於呼叫的程式。中斷通常是程式執行中出現的特殊情況,如引用特殊記憶體中的非法地址, 浮點數被0除。

    signal()的原型為:

    #include <signal.h>

    void(*signal(int hum,void(*func)(int)))(int)。

    signal中的int引數及其含義

    SIGHUP 1 A 終端掛起或者控制程序終止

    SIGINT 2 A 鍵盤中斷(如break鍵被按下)

    SIGQU99v 3 C 鍵盤的退出鍵被按下

    SIGILL 4 C 非法指令

    SIGABRT 6 C 由abort(3)發出的退出指令

    SIGFPE 8 C 浮點異常

    SIGKILL 9 AEF Kill訊號

    SIGSEGV 11 C 無效的記憶體引用

    SIGPIPE 13 A 管道破裂: 寫一個沒有讀port的管道

    SIGALRM 14 A 由alarm(2)發出的訊號

    SIGTERM 15 A 終止訊號

    SIGUSR1 30,10,16 A 使用者自己定義訊號1

    SIGUSR2 31,12,17 A 使用者自己定義訊號2

    SIGCHLD 20,17,18 B 子程序結束訊號

    SIGCONT 19,18,25 程序繼續(曾被停止的程序)

    SIGSTOP 17,19,23 DEF 終止程序

    SIGTSTP 18,20,24 D 控制終端(tty)上按下停止鍵

    SIGTTIN 21,21,26 D 後臺程序企圖從控制終端讀

    SIGTTOU 22,22,27 D 後臺程序企圖從控制終端寫

    以下的訊號沒在POSIX.1中列出,而在SUSv2列出

    SIGBUS 10,7,10 C 匯流排錯誤(錯誤的記憶體訪問)

    SIGPOLL A Sys V定義的Pollable事件,與SIGIO同義

    SIGPROF 27,27,29 A Profiling定時器到

    SIGSYS 12,-,12 C 無效的系統呼叫 (SVID)

    SIGTRAP 5 C 跟蹤/斷點捕獲

    SIGURG 16,23,21 B Socket出現緊急條件(4.2 BSD)

    SIGVTALRM 26,26,28 A 實際時間報警時鐘訊號(4.2 BSD)

    SIGXCPU 24,24,30 C 超出設定的CPU時間限制(4.2 BSD)

    SIGXFSZ 25,25,31 C 超出設定的檔案限制大小(4.2 BSD)

    (對於SIGSYS。SIGXCPU。SIGXFSZ。以及某些機器體系結構下的SIGBUS,Linux預設的動作是A (terminate),SUSv2 是C (terminate and dump core))。

    以下是其他的一些訊號

    訊號 值 處理動作 發出訊號的原因

    SIGIOT 6 C IO捕獲指令,與SIGABRT同義

    SIGEMT 7,-,7

    SIGSTKFLT -,16,- A 協處理器堆疊錯誤

    SIGIO 23,29,22 A 某I/O操作如今能夠進行了(4.2 BSD)

    SIGCLD -,-,18 A 與SIGCHLD同義

    SIGPWR 29,30,19 A 電源故障(System V)

    SIGINFO 29,-,- A 與SIGPWR同義

    SIGLOST -,-,- A 檔案鎖丟失

    SIGWINCH 28,28,20 B 窗體大小改變(4.3 BSD, Sun)

    SIGUNUSED -,31,- A 未使用的訊號(will be SIGSYS)

  • 中秋節和大豐收的關聯?
  • 這幅草書的水平如何?為什麼?