• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

               C++ 技術中心

               :: 首頁 :: 聯系 ::  :: 管理
              160 Posts :: 0 Stories :: 87 Comments :: 0 Trackbacks

            公告

            鄭重聲明:本BLOG所發表的原創文章,作者保留一切權利。必須經過作者本人同意后方可轉載,并注名作者(天空)和出處(CppBlog.com)。作者Email:coder@luckcoder.com

            留言簿(27)

            搜索

            •  

            最新隨筆

            最新評論

            評論排行榜

            一.信號列表
            $ kill -l
            1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
             5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
             9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
            13) SIGPIPE     14) SIGALRM     15) SIGTERM     17) SIGCHLD
            18) SIGCONT     19) SIGSTOP     20) SIGTSTP     21) SIGTTIN
            22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
            26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO
            30) SIGPWR      31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1
            36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4  39) SIGRTMIN+5
            40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8  43) SIGRTMIN+9
            44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
            48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
            52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
            56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6  59) SIGRTMAX-5
            60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2  63) SIGRTMAX-1
            64) SIGRTMAX

            (1)1 ~ 31的信號為傳統UNIX支持的信號,是不可靠信號(非實時的)
            (2)32 ~ 63的信號是后來擴充的,稱做可靠信號(實時信號)。不可靠信號和可靠信號的區別在于前者不支持排隊,可能會造成信號丟失,而后者不會。

            二.具體每個信號的產生原因
            1) SIGHUP:當用戶退出shell時,由該shell啟動的所有進程將收到這個信號,默認動作為終止進程

            本信號在用戶終端連接(正常或非正常)結束時發出, 通常是在終端的控制進程結束時, 通知同一session內的各個作業, 這時它們與控制終端不再關聯。

            登錄Linux時,系統會分配給登錄用戶一個終端(Session)。在這個終端運行的所有程序,包括前臺進程組和后臺進程組,一般都屬于這個Session。當用戶退出Linux登錄時,前臺進程組和后臺有對終端輸出的進程將會收到SIGHUP信號。這個信號的默認操作為終止進程,因此前臺進程組和后臺有終端輸出的進程就會中止。不過可以捕獲這個信號,比如wget能捕獲SIGHUP信號,并忽略它,這樣就算退出了Linux登錄,wget也能繼續下載。

            此外,對于與終端脫離關系的守護進程,這個信號用于通知它重新讀取配置文件。


            2)SIGINT:當用戶按下了<Ctrl+C>組合鍵時,用戶終端向正在運行中的由該終端啟動的程序發出此信號。默認動
            作為終止里程。

            3)SIGQUIT:當用戶按下<ctrl+\>組合鍵時產生該信號,用戶終端向正在運行中的由該終端啟動的程序發出些信
            號。默認動作為終止進程。
            進程在因收到SIGQUIT退出時會產生core文件, 在這個意義上類似于一個程序錯誤信號。

            4)SIGILL:CPU檢測到某進程執行了非法指令。默認動作為終止進程并產生core文件
            執行了非法指令. 通常是因為可執行文件本身出現錯誤, 或者試圖執行數據段. 堆棧溢出時也有可能產生這個信號。

            5)SIGTRAP:該信號由斷點指令或其他 trap指令產生。默認動作為終止里程 并產生core文件。
            由斷點指令或其它trap指令產生. 由debugger使用。

            6 ) SIGABRT:調用abort函數時產生該信號。默認動作為終止進程并產生core文件。

            7)SIGBUS:非法訪問內存地址,包括內存對齊出錯,默認動作為終止進程并產生core文件。
            非法地址, 包括內存地址對齊(alignment)出錯。比如訪問一個四個字長的整數, 但其地址不是4的倍數。它與SIGSEGV的區別在于后者是由于對合法存儲地址的非法訪問觸發的(如訪問不屬于自己存儲空間或只讀存儲空間)。

            8)SIGFPE:在發生致命的運算錯誤時發出。不僅包括浮點運算錯誤,還包括溢出及除數為0等所有的算法錯誤。默
            認動作為終止進程并產生core文件。


            9)SIGKILL:無條件終止進程。本信號不能被忽略,處理和阻塞。默認動作為終止進程。它向系統管理員提供了可
            以殺死任何進程的方法。

            10)SIGUSE1:用戶定義 的信號。即程序員可以在程序中定義并使用該信號。默認動作為終止進程。

            11)SIGSEGV:指示進程進行了無效內存訪問。默認動作為終止進程并產生core文件。
            試圖訪問未分配給自己的內存, 或試圖往沒有寫權限的內存地址寫數據

            12)SIGUSR2:這是另外一個用戶自定義信號 ,程序員可以在程序中定義 并使用該信號。默認動作為終止進程。

            13)SIGPIPE:Broken pipe向一個沒有讀端的管道寫數據。默認動作為終止進程。

            14) SIGALRM:定時器超時,超時的時間 由系統調用alarm設置。默認動作為終止進程。
            時鐘定時信號, 計算的是實際的時間或時鐘時間. alarm函數使用該信號.

            15)SIGTERM:程序結束信號,與SIGKILL不同的是,該信號可以被阻塞和終止。通常用來要示程序正常退出。執行
            shell命令Kill時,缺省產生這個信號。默認動作為終止進程。
            程序結束(terminate)信號, 與SIGKILL不同的是該信號可以被阻塞和處理。通常用來要求程序自己正常退出,shell命令kill缺省產生這個信號。如果進程終止不了,我們才會嘗試SIGKILL。

            17)SIGCHLD:子進程結束時,父進程會收到這個信號。默認動作為忽略這個信號。

            子進程結束時, 父進程會收到這個信號。

            如果父進程沒有處理這個信號,也沒有等待(wait)子進程,子進程雖然終止,但是還會在內核進程表中占有表項,這時的子進程稱為僵尸進程。這種情況我們應該避免(父進程或者忽略SIGCHILD信號,或者捕捉它,或者wait它派生的子進程,或者父進程先終止,這時子進程的終止自動由init進程來接管)。


            18)SIGCONT:停止進程的執行。信號不能被忽略,處理和阻塞。默認動作為終止進程。
            讓一個停止(stopped)的進程繼續執行. 本信號不能被阻塞. 可以用一個handler來讓程序在由stopped狀態變為繼續執行時完成特定的工作. 例如, 重新顯示提示符

            19)SIGSTOP
            停止(stopped)進程的執行. 注意它和terminate以及interrupt的區別:該進程還未結束, 只是暫停執行. 本信號不能被阻塞, 處理或忽略.

            20)SIGTSTP:停止進程的運行。按下<ctrl+z>組合鍵時發出這個信號。默認動作為暫停進程。
            停止進程的運行, 但該信號可以被處理和忽略. 用戶鍵入SUSP字符時(通常是Ctrl-Z)發出這個信號

            21)SIGTTIN:后臺進程讀終端控制臺。默認動作為暫停進程。
            當后臺作業要從用戶終端讀數據時, 該作業中的所有進程會收到SIGTTIN信號. 缺省時這些進程會停止執行.

            22)SIGTTOU:該信號類似于SIGTTIN,在后臺進程要向終端輸出數據時發生。默認動作為暫停進程。
            類似于SIGTTIN, 但在寫終端(或修改終端模式)時收到.

            23)SIGURG:套接字上有緊急數據時,向當前正在運行的進程發出些信號,報告有緊急數據到達。如網絡帶外數據
            到達,默認動作為忽略該信號。
            有"緊急"數據或out-of-band數據到達socket時產生.

            24)SIGXCPU:進程執行時間超過了分配給該進程的CPU時間 ,系統產生該信號并發送給該進程。默認動作為終止
            進程。
            超過CPU時間資源限制. 這個限制可以由getrlimit/setrlimit來讀取/改變

            25)SIGXFSZ:超過文件的最大長度設置。默認動作為終止進程。
            當進程企圖擴大文件以至于超過文件大小資源限制。

            26)SIGVTALRM:虛擬時鐘超時時產生該信號。類似于SIGALRM,但是該信號只計算該進程占用CPU的使用時間。默
            認動作為終止進程。
            虛擬時鐘信號. 類似于SIGALRM, 但是計算的是該進程占用的CPU時間.

            27)SGIPROF:類似于SIGVTALRM,它不公包括該進程占用CPU時間還包括執行系統調用時間。默認動作為終止進
            程。
            包括該進程用的CPU時間以及系統調用的時間

            28)SIGWINCH:窗口變化大小時發出。默認動作為忽略該信號。

            29)SIGIO:此信號向進程指示發出了一個異步IO事件。默認動作為忽略。
            文件描述符準備就緒, 可以開始進行輸入/輸出操作

            30)SIGPWR:關機。默認動作為終止進程。

            31)SIGSYS:無效的系統調用。默認動作為終止進程并產生core文件。

            32)SIGRTMIN~(64)SIGRTMAX:LINUX的實時信號,它們沒有固定的含義(可以由用戶自定義)。
            所有的實時信號的默認動作都為終止進程。 

            在以上列出的信號中,程序不可捕獲、阻塞或忽略的信號有:SIGKILL,SIGSTOP
            不能恢復至默認動作的信號有:SIGILL,SIGTRAP
            默認會導致進程流產的信號有:SIGABRT,SIGBUS,SIGFPE,SIGILL,SIGIOT,SIGQUIT,SIGSEGV,SIGTRAP,SIGXCPU,SIGXFSZ
            默認會導致進程退出的信號有:SIGALRM,SIGHUP,SIGINT,SIGKILL,SIGPIPE,SIGPOLL,SIGPROF,SIGSYS,SIGTERM,SIGUSR1,SIGUSR2,SIGVTALRM
            默認會導致進程停止的信號有:SIGSTOP,SIGTSTP,SIGTTIN,SIGTTOU
            默認進程忽略的信號有:SIGCHLD,SIGPWR,SIGURG,SIGWINCH

            此外,SIGIO在SVR4是退出,在4.3BSD中是忽略;SIGCONT在進程掛起時是繼續,否則是忽略,不能被阻塞。 

            posted on 2017-09-27 17:51 C++技術中心 閱讀(814) 評論(0)  編輯 收藏 引用 所屬分類: Linux 編程
            欧美亚洲国产精品久久久久| 久久久午夜精品| 久久免费视频网站| 久久综合精品国产一区二区三区| 久久久久久免费视频| 97久久超碰成人精品网站| 国产综合成人久久大片91| 伊人久久大香线蕉无码麻豆| www性久久久com| 亚洲国产精品一区二区三区久久 | 国产精品久久久久a影院| 久久久久久国产精品免费无码| 国产精品成人无码久久久久久| 亚洲午夜无码久久久久| 久久国产美女免费观看精品| 99国产欧美精品久久久蜜芽| 99久久这里只精品国产免费 | 日韩AV毛片精品久久久| AV色综合久久天堂AV色综合在| 久久综合精品国产一区二区三区| 久久99久久99小草精品免视看| 久久久久久国产精品无码下载 | .精品久久久麻豆国产精品| 亚洲国产精品成人久久蜜臀| 国产精品欧美久久久久无广告| 久久91精品国产91久久户| 日本久久久久亚洲中字幕| 囯产极品美女高潮无套久久久| 欧美性猛交xxxx免费看久久久| 26uuu久久五月天| 香蕉久久一区二区不卡无毒影院 | 99久久久精品| 久久国产免费观看精品3| 亚洲国产视频久久| 色婷婷狠狠久久综合五月| 青青热久久国产久精品 | 国产日产久久高清欧美一区| 色婷婷综合久久久久中文一区二区| 久久国内免费视频| 深夜久久AAAAA级毛片免费看| 人人狠狠综合久久亚洲高清|