exit函式與return區別

2021-07-25 07:53:06 字數 1580 閱讀 4994

exit(int n)其實就是直接退出程式,因為預設的標準程式入口為 

int main(int argc, char** argv)

,返回值是

int型的。一般在

shell

下面,執行乙個程式,然後使用命令

echo $?

就能得到該程式的返回值,也就是退出值,在

main()

裡面,你可以用

return n

,也能夠直接用

exit(n)

來做。unix

預設的習慣正確退出是返回

0,錯誤返回非0。

理論上exit

可以返回小於

256的任何整數。返回的不同數值主要是給呼叫者作不同處理的。

單獨的程序是返回給作業系統的。如果是多程序,是返回給父程序的。父程序裡面呼叫waitpid()

等函式得到子程序退出的狀態,以便作不同處理。根據相應的返回值來讓呼叫者作出相應的處理

.總的說來,

exit

()就是當前程序把控制權返回給呼叫該程式的程式

,括號裡的是返回值

,告訴呼叫程式該程式的執行狀態

1,exit

用於在程式執行的過程中隨時結束程式,

exit

的引數是返回給

os的。

main

函式結束時也會隱式地呼叫

exit

函式。exit

函式執行時首先會執行由

atexit()

函式登記的函式,然後會做一些自身的清理工作,同時重新整理所有輸出流、關閉所有開啟的流並且關閉通過標準

i/o函式

tmpfile()

建立的臨時檔案。

exit

是結束乙個程序,它將刪除程序使用的記憶體空間,同時把錯誤資訊返回父程序,而

return

是返回函式值並退出函式

2,return()是當前函式返回,當然如果是在主函式

main, 

自然也就結束當前程序了,如果不是,那就是退回上一層呼叫。在多個程序時

.如果有時要檢測上程序是否正常退出的

.就要用到上個程序的返回值,依次類推。

3,return

是語言級別的,它表示了呼叫堆疊的返回;而

exit

是系統呼叫級別的,它表示了乙個程序的結束。

4,exit

函式是退出應用程式,並將應用程式的乙個狀態返回給

os,這個狀態標識了應用程式的一些執行資訊。

5,和機器和作業系統有關一般是   

0 為正常退出  非

0 為非正常退出

6,void exit(int status);

7,atexit()

函式的引數是乙個函式指標,函式指標指向乙個沒有引數也沒有返回值的函式。

atexit()

的函式原型是:

int atexit (void (*)(void));

在乙個程式中最多可以用

atexit()

註冊32

個處理函式,這些處理函式的呼叫順序與其註冊的順序相反,也即最先註冊的最後呼叫,最後註冊的最先呼叫。

exit與return的區別

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

return與exit 的區別

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

Exit 與return的區別

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