sig是傳遞給它的唯一參數。執行了signal()調用後,進程只要接收到類型為sig的信號,不管其正在執行程式的哪一部分,就立即執行func()函式。當func()函式執行結束後,控制權返回進程被中斷的那一點繼續執行。
基本介紹
- 中文名:signal
- 性質:函式名
- 功 能:設定某一信號的對應動作
- 注意點:不要使用對操作
函式名: signal
- 按下CTRL+C產生SIGINT
- 硬體中斷,如除0,非法記憶體訪問(SIGSEV)等等
- Kill函式可以對進程傳送Signal
- Kill命令。實際上是對Kill函式的一個包裝
- 軟體中斷。如當Alarm Clock逾時(SIGURG),當Reader中止之後又向管道寫數據(SIGPIPE),等等
Signal | Description |
SIGABRT | 由調用abort函式產生,進程非正常退出 |
SIGALRM | 用alarm函式設定的timer逾時或setitimer函式設定的interval timer逾時 |
SIGBUS | 某種特定的硬體異常,通常由記憶體訪問引起 |
SIGCANCEL | 由Solaris Thread Library內部使用,通常不會使用 |
SIGCHLD | 進程Terminate或Stop的時候,SIGCHLD會傳送給它的父進程。預設情況下該Signal會被忽略 |
SIGCONT | 當被stop的進程恢復運行的時候,自動傳送 |
SIGEMT | 和實現相關的硬體異常 |
SIGFPE | 數學相關的異常,如被0除,浮點溢出,等等 |
SIGFREEZE | Solaris專用,Hiberate或者Suspended時候傳送 |
SIGHUP | 傳送給具有Terminal的Controlling Process,當terminal被disconnect時候傳送 |
SIGILL | 非法指令異常 |
SIGINFO | BSD signal。由Status Key產生,通常是CTRL+T。傳送給所有Foreground Group的進程 |
SIGINT | 由Interrupt Key產生,通常是CTRL+C或者DELETE。傳送給所有ForeGround Group的進程 |
SIGIO | 異步IO事件 |
SIGIOT | 實現相關的硬體異常,一般對應SIGABRT |
SIGKILL | 無法處理和忽略。中止某個進程 |
SIGLWP | 由Solaris Thread Libray內部使用 |
SIGPIPE | 在reader中止之後寫Pipe的時候傳送 |
SIGPOLL | 當某個事件傳送給Pollable Device的時候傳送 |
SIGPROF | Setitimer指定的Profiling Interval Timer所產生 |
SIGPWR | 和系統相關。和UPS相關。 |
SIGQUIT | 輸入Quit Key的時候(CTRL+\)傳送給所有Foreground Group的進程 |
SIGSEGV | 非法記憶體訪問 |
SIGSTKFLT | Linux專用,數學協處理器的棧異常 |
SIGSTOP | 中止進程。無法處理和忽略。 |
SIGSYS | 非法系統調用 |
SIGTERM | 請求中止進程,kill命令預設傳送 |
SIGTHAW | Solaris專用,從Suspend恢復時候傳送 |
SIGTRAP | 實現相關的硬體異常。一般是調試異常 |
SIGTSTP | Suspend Key,一般是Ctrl+Z。傳送給所有Foreground Group的進程 |
SIGTTIN | 當Background Group的進程嘗試讀取Terminal的時候傳送 |
SIGTTOU | 當Background Group的進程嘗試寫Terminal的時候傳送 |
SIGURG | 當out-of-band data接收的時候可能傳送 |
SIGUSR1 | 用戶自定義signal 1 |
SIGUSR2 | 用戶自定義signal 2 |
SIGVTALRM | setitimer函式設定的Virtual Interval Timer逾時的時候 |
SIGWAITING | Solaris Thread Library內部實現專用 |
SIGWINCH | 當Terminal的視窗大小改變的時候,傳送給Foreground Group的所有進程 |
SIGXCPU | 當CPU時間限制逾時的時候 |
SIGXFSZ | 進程超過檔案大小限制 |
SIGXRES | Solaris專用,進程超過資源限制的時候傳送 |