我已經使用exit()
來終止這個過程。我沒有任何退出處理程序註冊,我也不關心在退出時沖洗緩衝區,所以想到使用_exit()
作爲終止進程的更健壯的方法。exit()vs _exit():調用_exit()是否確保關閉所有打開的fd和套接字?
唯一的問題是,_exit()
是否處理關閉所有打開的文件描述符並優雅地打開套接字?
我已經使用exit()
來終止這個過程。我沒有任何退出處理程序註冊,我也不關心在退出時沖洗緩衝區,所以想到使用_exit()
作爲終止進程的更健壯的方法。exit()vs _exit():調用_exit()是否確保關閉所有打開的fd和套接字?
唯一的問題是,_exit()
是否處理關閉所有打開的文件描述符並優雅地打開套接字?
函數exit
調用_exit
。從TLPI:
以下行動是由退出()執行
所有文件描述符,目錄流,轉換 描述符和消息清單描述符中調用 進程中打開的,應關閉。
是的。實際上,在大多數平臺上,操作系統會關閉終止進程的文件和套接字,因此,它是否完成_exit()
,exit()
,assert(false)
或kill -KILL
並不重要。
請注意,stdio FILE *
流不會被_exit()
正確關閉,並且任何未寫入(仍有緩衝)的數據都將丟失。