• <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++ 技術中心

               :: 首頁 :: 聯(lián)系 ::  :: 管理
              160 Posts :: 0 Stories :: 87 Comments :: 0 Trackbacks

            公告

            鄭重聲明:本BLOG所發(fā)表的原創(chuàng)文章,作者保留一切權利。必須經過作者本人同意后方可轉載,并注名作者(天空)和出處(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的信號為傳統(tǒng)UNIX支持的信號,是不可靠信號(非實時的)
            (2)32 ~ 63的信號是后來擴充的,稱做可靠信號(實時信號)。不可靠信號和可靠信號的區(qū)別在于前者不支持排隊,可能會造成信號丟失,而后者不會。

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

            31)SIGSYS:無效的系統(tǒng)調用。默認動作為終止進程并產生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在進程掛起時是繼續(xù),否則是忽略,不能被阻塞。 

            posted on 2017-09-27 17:51 C++技術中心 閱讀(813) 評論(0)  編輯 收藏 引用 所屬分類: Linux 編程
            一本色综合久久| 94久久国产乱子伦精品免费| 亚洲精品99久久久久中文字幕| 国产69精品久久久久99尤物| 久久99精品久久久久久秒播 | 亚洲一区精品伊人久久伊人| 99久久精品国产一区二区| 久久精品aⅴ无码中文字字幕重口| 亚洲一本综合久久| 中文字幕人妻色偷偷久久| 97久久精品人人做人人爽| 久久综合给合久久国产免费 | 久久综合九色综合97_久久久| 久久亚洲AV永久无码精品| 亚洲国产美女精品久久久久∴| 久久精品国产福利国产琪琪| 无码精品久久久久久人妻中字| 国产精品狼人久久久久影院| 无码伊人66久久大杳蕉网站谷歌| 久久国产V一级毛多内射| 久久亚洲国产成人精品性色| 伊人久久亚洲综合影院| 久久久青草青青国产亚洲免观| 久久久精品免费国产四虎| 亚洲综合伊人久久大杳蕉| 一本色道久久88综合日韩精品 | 手机看片久久高清国产日韩| 亚洲国产天堂久久综合网站| 久久99精品久久久久婷婷| 午夜精品久久久久久中宇| 亚洲精品国精品久久99热| 久久久久久久久久久免费精品| 日韩欧美亚洲综合久久影院d3| 国产精品青草久久久久婷婷 | 精品久久人人妻人人做精品| 国产成人精品综合久久久| 青青国产成人久久91网| 97精品伊人久久久大香线蕉 | 欧美亚洲国产精品久久| 欧美成人免费观看久久| 亚洲狠狠婷婷综合久久蜜芽 |