return函式與exit函式的總結

2021-05-11 16:26:01 字數 2477 閱讀 5079

exit(0) 表示程式正常, exit(1)/exit(-1)表示程式異常退出

exit() 結束當前程序/當前程式/,在整個程式中,只要呼叫 exit ,就結束

return() 是當前函式返回,當然如果是在主函式main, 自然也就結束當前程序了,如果不是,那就是退回上一層呼叫。在多個程序時.如果有時要檢測上程序是否正常退出的.就要用到上個程序的返回值..

exit(1)表示程序正常退出. 返回 1;

exit(0)表示程序非正常退出. 返回 0.

程序環境與程序控制(1): 程序的開始與終止

1. 程序的開始:

c程式是從main函式開始執行, 原型如下:

int main(int argc, char *argv);

通常main的返回值是int型, 正確返回0.

如果main的返回值為void或者無, 某些編譯器會給出警告, 此時main的返回值通常是0.

關於main的命令列引數不做過多解釋, 以下面的程式展示一下:

#include

int main(int argc, char *argv)

2. 程序終止:

c程式的終止分為兩種: 正常終止和異常終止.

正常終止分為: return, exit, _exit, _exit, pthreade_exit

異常中指分為: abort, signal, 執行緒響應取消

主要說一下正常終止的前4種, 即exit系列函式.

#include /* iso c */

void exit(int status);

void _exit(int status);

#include /* posix */

void _exit(int status);

以上3個函式的區別是:

exit()(或return 0)會呼叫終止處理程式和使用者空間的標準i/o清理程式(如fclose), _exit和_exit不呼叫而直接由核心接管進行清

理.因此, 在main函式中exit(0)等價於return 0.

3. atexit終止處理程式:

iso c規定, 乙個程序最對可登記32個終止處理函式, 這些函式由exit按登記相反的順序自動呼叫. 如果同一函式登記多次, 也會被

呼叫多次.

原型如下:

#include

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

其中引數是乙個函式指標, 指向終止處理函式, 該函式無參無返回值.

以下面的程式為例:

#include

static void myexit1()

static void myexit2()

int main()

執行結果:

$ ./a.out

main is done

first exit handler

first exit handler

second exit handler執行結果:

$./a.out arg1 arg2 arg3

argv[0]: ./a.out

argv[1]: arg1

argv[2]: arg2

argv[3]: arg3

return函式exit函式區別

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

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

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

4,和機器和作業系統有關一般是   0 為正常退出  非0 為非正常退出

5,void exit(int status);

6,atexit()函式的引數是乙個函式指標,函式指標指向乙個沒有引數也沒有返回值的函式。atexit()的函式原型是:int atexit (void (*)(void));在乙個程式中最多可以用atexit()註冊32個處理函式,這些處理函式的呼叫順序與其註冊的順序相反,也即最先註冊的最後呼叫,最後註冊的最先呼叫。

一般程式執行到 main() 的結束就完成了, 如果想在程式結束時做一些事情, 可以嘗試著用這個函式.

example:

#include

#include

void f1(void)

void f2(void)

int main()

**自http://www.diybl.com/course/3_program/c++/cppsl/2008920/143972.html)

exit函式與return區別

exit int n 其實就是直接退出程式,因為預設的標準程式入口為 int main int argc,char argv 返回值是 int型的。一般在 shell 下面,執行乙個程式,然後使用命令 echo 就能得到該程式的返回值,也就是退出值,在 main 裡面,你可以用 return n 也...

exit函式和return函式的區別

1 exit函式和return函式的主要區別是 1 exit用於在程式執行的過程中隨時結束程式,其引數是返回給os的。也可以這麼講 exit函式是退出應用程式,並將應用程式的乙個狀態返回給os,這個狀態標識了應用程式的一些執行資訊。main函式結束時也會隱式地呼叫exit函式,exit函式執行時首先...

exit與return的區別

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