日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux学习之exit函数

發布時間:2023/12/9 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux学习之exit函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

From: http://hi.baidu.com/homappy/item/549b37c06865877488ad9e75

若父進程在子進程之前終止了,則子進程的父進程將變為init進程,其PID為1;保證每個進程都有父進程。

Linux學習之"exit函數"

先看下"_exit"和"exit":

exit被調用時,將沖刷所有的標準I/O流,關閉所有打開的文件描述符。在傳統實現中,同時也將關閉標準I/O流。即表示標準輸出FILE對象的相關存儲區將被清0。而_exit不會執行這些操作。 由于父子進程共享同一地址空間,當父進程恢復運行并調用printf時,不會產生任何輸出,它返回-1。這就是上一節調用_exit的原因。 然而,大多數exit的現代實現不再關閉流。因為進程即將終止,內核將關閉所有已打開的文件描述符。 Linux程序的終止分為"正常終止"和"異常終止",具體可能情況如下: 正常終止

從main返回

調用exit:ISO?C定義

調用_exit或_Exit:前者由ISO?C定義,后者由POSIX.1定義

最后一個線程從其啟動例程返回

最后一個線程調用pthread_exit

異常終止

調用abort:產生SIGABRT信號

接到某些信號

最后一個線程對取消請求做出響應

幾個要點: 1.不管進程如何終止,最后都會執行內核中的同一段代碼:為相應進程關閉所有打開描述符,釋放內存等等。 2.若父進程在子進程之前終止了,則子進程的父進程將變為init進程,其PID為1保證每個進程都有父進程。 3.當子進程先終止,父進程如何知道子進程的終止狀態?事實上,內核為每個終止子進程保存了終止狀態等信息,父進程調用wait等函數,就可獲取該信息。 4.當父進程調用wait等函數后內核將釋放終止進程所使用的所有內存,關閉其打開的所有文件。 5.對于已經終止、但是其父進程尚未對其調用wait等函數的進程,被稱為僵尸進程(即已經結束,但尚未釋放資源的)。 6.對于父進程先終止,而被init領養的進程會是僵尸進程嗎?init對每個終止的子進程,都會調用wait函數,獲取其終止狀態信息。 綜上所述,子進程調用exit后,父進程必須調用wait

總結

以上是生活随笔為你收集整理的Linux学习之exit函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。