詳談UNIX環境進程異常退出

來源:互聯網
上載者:User
關鍵字 Unix 環境進程 異常退出

希望讀者閱讀此文後,對進程異常退出問題有更深層的認識,有更系統的梳理,對調試此類進程崩潰問題時也能有所説明,寫出更穩定、更可靠的軟體。

進程異常退出

進程退出意味著進程生命期的結束,系統資源被回收,進程從作業系統環境中銷毀。 進程異常退出是進程在運行過程中被意外終止,從而導致進程本來應該繼續執行的任務無法完成。

進程異常退出可能給軟體使用者造成如下負面影響:

軟體喪失部分或者全部功能性,無法完成既定任務。 如果進程正在處理資料,可能造成資料損壞。 如果是關鍵軟體服務,必然導致服務異常中止 , 造成無法預計的損失。 進程異常退出或者進程崩潰 , 也會給軟體使用者造成恐慌和困惑。

進程異常退出是生產環境中經常遇到的問題,它會給軟體使用者造成很多負面影響,所以HTTP://www.aliyun.com/zixun/aggregation/6434.html">軟體發展者應當避免這種問題的出現。 但是導致進程異常退出的場景和原因是多種多樣的,甚至令人琢磨不透。

本文將所有可能造成進程異常退出的原因歸結為兩類。 系統地將其分類,使讀者對此類問題能有清晰的認識。 對每類情況詳細論述,分析根本原因,然後分析了這兩類情況之間的聯繫,也就是信號與進程異常退出的緊密關係。 希望您讀完此文後,能對此類問題有更加全面、深入的理解,對調試此類問題也能有所説明,寫出更加可靠、更加穩定性、更加健壯的軟體。

首先我們來看導致進程異常退出的這兩類情況:

第一類:向進程發送信號導致進程異常退出; 第二類:代碼錯誤導致進程運行時異常退出。

第一類:向進程發送信號導致進程異常退出

信號:

UNIX 系統中的信號是系統回應某些狀況而產生的事件,是進程間通信的一種方式。 信號可以由一個進程發送給另外進程,也可以由核發送給進程。

信號處理常式:

信號處理常式是進程在接收到信號後,系統對信號的回應。 根據具體信號的涵義,相應的預設信號處理常式會採取不同的信號處理方式:

終止進程運行,並且產生 core dump 檔。 終止進程運行。 忽略信號,進程繼續執行。 暫停進程運行。 如果進程已被暫停,重新調度進程繼續執行。

前兩種方式會導致進程異常退出,是本文討論的範圍。 實際上,大多數預設信號處理常式都會終止進程的運行。

在進程接收到信號後,如果進程已經綁定自訂的信號處理常式,進程會在使用者態執行自訂的信號處理常式;反之,內核會執行預設信號程式終止進程運行,導致進程異常退出。

圖 1. 預設信號處理常式終止進程運行

所以,通過向進程發送信號可以觸發預設信號處理常式,預設信號處理常式終止進程運行。 在 UNIX 環境中11545.html">我們有三種方式將信號發送給目標進程,導致進程異常退出。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.