亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

信號之信號概念

2024-06-28 13:28:30
字體:
來源:轉載
供稿:網友
信號之信號概念

信號是軟中斷,它提供了一種處理異步事件的方法。

首先,每個信號都有一個名字。這些名字都以三個字符SIG開頭。

在頭文件<signal.h>中,這些信號都被定義為正整數(信號編號)。

實際上,實現將各信號定義在另一個頭文件中,但是該頭文件又包括在<signal.h>中。通常,若應用程序和內核兩者都需使用同一定義,那么就將有關信息放置在內核頭文件中,然后用戶級頭文件再包括該內核頭文件。

不存在編號為0的信號。(kill函數對信號編號0有特殊的應用。POSIX.1將此種信號編號值稱為空信號。)

產生信號的條件:

  • 當用戶按某些終端鍵時,引發終端產生的信號。
  • 硬件異常產生信號。
  • 進程調用kill(2)函數可將信號發送給另一個進程或進程組。(自然,對此有所限制:接收信號進程和發送信號進程的所有者必須相同,或者發送信號進程的所有者必須是超級用戶。)
  • 用戶可用kill(1)命令將信號發送給其他進程。
  • 當檢測到某種軟件條件已經發生,并應將其通知有關進程時也產生信號。(這里指的不是硬件產生的條件,而是軟件條件。)

信號是異步事件的經典實例。產生信號的事件對進程而言是隨機出現的。進程不能簡單地測試一個變量(例如errno)來判別是否出現了一個信號,而是必須告訴內核“在此信號出現時,請執行下列操作”。

可以要求內核在某個信號出現時按照下列三種方式之一進行處理,我們稱之為信號的處理或者與信號相關的動作。

(1)忽略此信號。大多數信號都可使用這種方法進行處理,但是有兩種信號決不能被忽略:SIGKILL和SIGSTOP。這兩種信號不能被忽略的原因是:它們向超級用戶提供了使進程終止或停止的可靠方法。另外,如果忽略某些由硬件異常產生的信號(例如除以0),則進程的運行行為是未定義的。

(2)捕捉信號。為了做到這一點,要通知內核在某種信號發生時調用一個用戶函數。在用戶函數中,可執行用戶希望對這種事件進行的處理。注意,不能捕捉SIGKILL和SIGSTOP信號。

(3)執行系統默認動作。注意,針對大多數信號的系統默認動作是終止進程。

表10-1列出了所有信號的名字,說明了哪些系統支持此信號以及針對這些信號的系統默認動作。在“默認動作”列中,“終止+core”表示在進程當前工作目錄的core文件中復制該進程的存儲映像。大多數UNIX調試程序都使用core文件以檢查進程終止時的狀態。

                                                                              表10-1 UNIX系統信號

1345121425_7866

UNIX系統信號:

Signal                 Description

SIGABRT              調用abort函數產生此信號,進程異常終止

SIGALRM              用alarm函數設置的計時器超時或setitimer函數設置的間隔時間超時

SIGBUS                某種特定的硬件異常,通常由內存訪問引起

SIGCANCEL          由Solaris 線程庫內部使用,它不供一般使用

SIGCHLD              進程終止或停止的時候,SIGCHLD會發送給它的父進程。缺省情況下該信號會被忽略。如果父進程希望被告知其子進程的這種狀態改變,則應捕捉此信號,信號捕捉函數中通常要調用一種wait函數以取得子進程ID和其終止狀態。

SIGCONT             此作業控制信號被發送給需要繼續運行,但當前處于停止狀態的進程。如果接收到此信號的進程處于停止狀態,則系統默認動作是使該進程繼續運行,否則默認動作是忽略此信號。

SIGEMT                和實現相關的硬件異常

SIGFPE                此信號表示一個算術運算異常,如被0除,浮點溢出,等等

SIGFREEZE          Solaris專用,它用于通知進程在凍結系統狀態之前需要采取特定動作。

SIGHUP               如果終端接口檢測到一個連接斷開,則將此信號發送給與該終端相關的控制進程(會話首進程)。注意,接收到此信號的會話首進程可能在后臺。如果會話首進程終止,則也產生此信號。在這種情況下,此信號被發送給前臺進程組中的每一個進程。

SIGILL                 此信號指示進程已執行一條非法硬件指令。

SIGINFO              BSD signal。當用戶按狀態鍵(一般采用Ctrl+T)時,終端驅動程序產生此信號并送至前臺進程組中的每一個進程。此信號通常導致在終端上顯示前臺進程組中個進程的狀態信息。

SIGINT                由Interrupt Key產生,通常是CTRL+C或者DELETE。發送給所有ForeGround Group的進程

SIGIO                  異步IO事件

SIGIOT                實現相關的硬件異常,一般對應SIGABRT

SIGKILL               無法捕捉和忽略。它向系統管理員提供了一種可以殺死任一進程的可靠方法。

SIGLWP              由Solaris Thread Libray內部使用,并不作一般使用

SIGPIPE              如果在寫管道時讀進程已終止,則產生此信號。當類型為SOCK_STREAM的套接字已不再連接時,進程寫到該套接字也產生此信號。

SIGPOLL             當在一個可輪詢設備上發生一特定事件時產生此信號。

SIGPROF             當setitimer(2)函數設置的梗概統計間隔計時器(profiling interval timer)已到期時產生此信號。

SIGPWR              和系統相關。和UPS相關。

SIGQUIT              輸入Quit Key的時候(CTRL+/)發送給所有Foreground Group的進程

SIGSEGV             非法內存訪問(SEGV,segmentation violation,段違例)

SIGSTKFLT          linux專用,數學協處理器的棧異常

SIGSTOP             停止一個進程。無法捕捉和忽略。

SIGSYS               無效的系統調用

SIGTERM             這是由kill(1)命令發送的系統默認終止信號。

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專用,進程超過資源限制的時候發送

 

本篇博文內容摘自《UNIX環境高級編程》(第二版),僅作個人學習記錄所用。關于本書可參考:http://www.apuebook.com/。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品欧美在线| 国产成人一区二区三区小说| 日本成人精品在线| 97在线精品国自产拍中文| 日韩电影免费在线观看中文字幕| 国产精品黄页免费高清在线观看| 狠狠干狠狠久久| 亚洲系列中文字幕| 国产精品久久久久久久7电影| 国产精品三级久久久久久电影| 成人午夜激情免费视频| 岛国av一区二区| 久久露脸国产精品| 精品成人乱色一区二区| 亚洲美女性视频| 成人午夜激情免费视频| 尤物yw午夜国产精品视频| 久久久久久久999| 51精品国产黑色丝袜高跟鞋| 日本欧美一级片| 亚洲日本成人网| 亚洲第一综合天堂另类专| 亚洲第一区在线观看| 国产一区二区成人| 中文字幕亚洲专区| 亚洲欧洲日产国码av系列天堂| 欧美日本高清一区| 成人写真福利网| 国产精品18久久久久久麻辣| 久久综合伊人77777| 久久在精品线影院精品国产| 川上优av一区二区线观看| 国产精品久久久久久久久粉嫩av| 在线a欧美视频| 欧美精品videos性欧美| 久久国产一区二区三区| 美日韩精品视频免费看| 亚洲女人天堂成人av在线| 国内外成人免费激情在线视频网站| 欧洲日韩成人av| 狠狠躁夜夜躁人人爽超碰91| 欧美电影免费观看高清完整| 欧美亚洲视频一区二区| 欧美激情视频一区二区| 136fldh精品导航福利| 精品国产一区久久久| 高跟丝袜欧美一区| 欧美日韩在线另类| 欧美丰满少妇xxxxx做受| 91高清免费在线观看| 亚洲一区二区三区香蕉| 激情懂色av一区av二区av| 国产精品视频xxxx| 久久天天躁日日躁| 日韩高清av在线| 中文字幕亚洲色图| 91av视频在线观看| 亚洲欧美中文日韩在线| 亚洲第一中文字幕在线观看| 国产一区香蕉久久| 欧美大片免费观看在线观看网站推荐| 欧美电影在线观看网站| 亚洲精选一区二区| 日本成熟性欧美| 欧美黑人极品猛少妇色xxxxx| 成人网在线视频| 欧美成人午夜激情| 国产精品久久久| 日韩美女视频免费在线观看| 欧美中文在线观看| 欧美激情喷水视频| 日韩精品极品毛片系列视频| 欧美日韩精品在线视频| 亚洲人成网站777色婷婷| 欧美xxxx综合视频| 国产精品久久久久aaaa九色| xxx欧美精品| 亚洲精品美女网站| 国产精品亚洲自拍| 欧美日韩亚洲网| 亚洲精品mp4| 国产精品高清在线| 日韩av片永久免费网站| 亚洲区一区二区| 中文字幕日韩专区| 不卡av在线网站| 久久影院免费观看| 1769国内精品视频在线播放| 亚洲xxxxx| 亚洲自拍偷拍福利| 国产精品xxxxx| 成人激情视频在线| 国产精品电影网| 欧美午夜激情视频| 久久中文久久字幕| 欧美巨猛xxxx猛交黑人97人| 欧美午夜片在线免费观看| 在线亚洲欧美视频| 亚洲黄色在线观看| 欧美日韩免费区域视频在线观看| 欧美乱妇40p| 国产精品揄拍一区二区| 久久久久久久亚洲精品| 91香蕉亚洲精品| 日韩中文av在线| 欧美亚洲另类视频| 91九色国产社区在线观看| 久久久久久亚洲| 亚洲日本成人网| 久久影视电视剧免费网站清宫辞电视| 亚洲第一网中文字幕| 亚洲国产小视频在线观看| 黑丝美女久久久| 亚洲国产精品久久久久秋霞不卡| 最近2019免费中文字幕视频三| 韩国三级电影久久久久久| 亚洲国产精品99久久| 亚洲精品国产精品自产a区红杏吧| 国产精品日韩在线观看| 国语自产精品视频在线看| 日本一区二三区好的精华液| 国产精品久久久久久久久影视| 国产精品99久久久久久久久| 国产精品美女在线| 国产精品www| 欧美国产亚洲视频| 国外成人在线播放| 97**国产露脸精品国产| 亚洲美女在线观看| 日韩av中文字幕在线| 日韩av成人在线| 国产精品自拍小视频| 色小说视频一区| www.日韩不卡电影av| 伊人伊成久久人综合网小说| 欧美午夜精品久久久久久浪潮| 欧美小视频在线观看| 亚洲成人激情小说| 欧美性猛交xxxxx免费看| 庆余年2免费日韩剧观看大牛| 欧美精品激情blacked18| 日韩免费观看在线观看| 在线丨暗呦小u女国产精品| 日韩免费av一区二区| 97精品久久久中文字幕免费| 亚洲美女精品久久| 久久久最新网址| 日韩欧美高清视频| 国产精品视频久久| 日韩成人网免费视频| 日韩在线观看av| 米奇精品一区二区三区在线观看| 色爱精品视频一区| 国产欧美日韩专区发布| 国产精品无码专区在线观看| 亚洲精品日韩av| 日韩亚洲第一页| 国产成+人+综合+亚洲欧洲| 国产a∨精品一区二区三区不卡| 国内精品中文字幕| 国产精品视频一区国模私拍| 欧美日韩不卡合集视频| 在线成人中文字幕| 亚洲视频欧洲视频|