第一是在最初呼叫的時候的區別
按照ansi c,在最初呼叫的main()中使用return和exit()的效果相同。
但要注意這裡所說的是「最初呼叫」
如果main()在乙個遞迴程式中,exit()仍然會終止程式;
但return控制權移交給遞迴的前一級,直到最初的那一級,此時return才會終止程式。
另乙個是在main()之外呼叫exit()
即使在除main()之外的函式中呼叫exit(),它也將終止程式。
_exit()與exit的區別:
標頭檔案:
exit:#include
_exit:#include
_exit()函式:直接使程序停止執行,清除其使用的記憶體空間,並銷毀其在核心中的各種資料結構;
exit()函式則是在這些基礎上作了一些包裝,在執行退出之前加了若干道工序。
exit()函式與_exit()函式最大的區別
exit()函式在呼叫 exit 系統呼叫之前要檢查檔案的開啟情況,把檔案緩衝區中的內容寫回檔案。
注:exit()就是退出,傳入的引數是程式退出時的狀態碼,0表示正常退出,其他表示非正常退出,一般都用-1或者1.
exit()的退出過程
1.呼叫atexit()註冊的函式(出口函式);按atexit註冊時相反的順序呼叫所有由它註冊的函式,這使得我們可以指定在程式終止時執行自己的清理動作.例如,儲存程式狀態資訊於某個檔案,解開對共享資料庫上的鎖等。
2.cleanup();關閉所有開啟的流,這將導致寫所有被緩衝的輸出,刪除用tmpfile函式建立的所有臨時檔案 [1] 。
3.最後呼叫_exit()函式終止程序
exit()做三件事:
1、屬於該過程的檔案描述符都將被關閉
2、程序的任何子程序都由程序1繼承
3、程序的父節點傳送sigchld訊號
exit執行完清理工作後就呼叫_exit來終止程序。
exit與return的區別
一直沒有太留意這兩者的區別,但是在看unix網路程式設計的時候遇到問題了,我很疑惑,書中很多的系統呼叫都被作者替換成了包裹函式,而這些包裹函式最後都是呼叫了乙個統一的錯誤處理函式,結構如下,我很奇怪為什麼呼叫包裹函式之後程式會直接退出,按我理解應該用exec直接替換掉主調函式才能使其終結。這裡的癥結...
return與exit 的區別
return 返回函式值,是關鍵字 很明顯,exit 是乙個函式。return 語言提供的,是語言級別的,它表示了呼叫堆疊的返回,是函式的退出 返回 而exit 是作業系統提供的 或者函式庫中給出的 是系統呼叫級別的,它表示了乙個程序的結束。exit 退出程式 把控制權交給作業系統 return 結...
exit與return的區別
exit 是整個程式的結束。exit 0 正常執行程式並退出程式 exit 1 非正常執行導致退出程式 return 是某個函式的結束,並返回結果。return返回函式值,是關鍵字 exit 是乙個函式。return是語言級別的,它表示了呼叫堆疊的返回 而exit是系統呼叫級別的,它表示了乙個程序的...