exit與return的區別

2021-06-12 07:15:13 字數 863 閱讀 8919

一直沒有太留意這兩者的區別,但是在看unix網路程式設計的時候遇到問題了,我很疑惑,書中很多的系統呼叫都被作者替換成了包裹函式,而這些包裹函式最後都是呼叫了乙個統一的錯誤處理函式,結構如下,我很奇怪為什麼呼叫包裹函式之後程式會直接退出,按我理解應該用exec直接替換掉主調函式才能使其終結。。。。這裡的癥結就是沒有理解return和exit。先看一下我給的例子:

int main(){

packet_func();

//if error occures,will the following code continue running?

...code...

int packet_fun(){

if(error occured)

handle_error();

int handle_error(){

//handle error

exit(-1);

試驗的結果相信大家都知道了,就是一旦handle_error返回,整個程式是會結束的,那麼為什麼呢?我查了一下,真是慚愧。。。。

exit用於在程式執行的過程中隨時結束程式,exit的引數是返回給os的。main函式結束時也會隱式地呼叫exit函式。exit函式執行時首先會執行由atexit()函式登記的函式,然後會做一些自身的清理工作,同時重新整理所有輸出流、關閉所有開啟的流並且關閉通過標準i/o函式tmpfile()建立的臨時檔案。exit是結束乙個程序,它將刪除程序使用的記憶體空間,同時把錯誤資訊返回父程序,而return是返回函式值並退出函式

2,return是語言級別的,它表示了呼叫堆疊的返回;而exit是系統呼叫級別的,它表示了乙個程序的結束。

3,exit函式是退出應用程式,並將應用程式的乙個狀態返回給os,這個狀態標識了應用程式的一些執行資訊。

return與exit 的區別

return 返回函式值,是關鍵字 很明顯,exit 是乙個函式。return 語言提供的,是語言級別的,它表示了呼叫堆疊的返回,是函式的退出 返回 而exit 是作業系統提供的 或者函式庫中給出的 是系統呼叫級別的,它表示了乙個程序的結束。exit 退出程式 把控制權交給作業系統 return 結...

Exit 與return的區別

第一是在最初呼叫的時候的區別 按照ansi c,在最初呼叫的main 中使用return和exit 的效果相同。但要注意這裡所說的是 最初呼叫 如果main 在乙個遞迴程式中,exit 仍然會終止程式 但return控制權移交給遞迴的前一級,直到最初的那一級,此時return才會終止程式。另乙個是在...

exit與return的區別

exit 是整個程式的結束。exit 0 正常執行程式並退出程式 exit 1 非正常執行導致退出程式 return 是某個函式的結束,並返回結果。return返回函式值,是關鍵字 exit 是乙個函式。return是語言級別的,它表示了呼叫堆疊的返回 而exit是系統呼叫級別的,它表示了乙個程序的...