3 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
exit() 結(jié)束當(dāng)前進(jìn)程/當(dāng)前程序/,在整個(gè)程序中,只要調(diào)用 exit ,就結(jié)束。
return() 是當(dāng)前函數(shù)返回,當(dāng)然如果是在主函數(shù)main, 自然也就結(jié)束當(dāng)前進(jìn)程了,如果不是,那就是退回上一層調(diào)用。
在多個(gè)進(jìn)程時(shí).如果有時(shí)要檢測上進(jìn)程是否正常退出的.就要用到上個(gè)進(jìn)程的返回值。
exit(1)表示進(jìn)程正常退出. 返回 1;
exit(0)表示進(jìn)程非正常退出. 返回 0.
操作:
1、進(jìn)程的開始:
C程序是從main函數(shù)開始執(zhí)行, 原型如下:int main(int argc, char *argv[]),通常main的返回值是int型, 正確返回0.如果main的返回值為void或者無, 某些編譯器會給出警告, 此時(shí)main的返回值通常是0.
2、進(jìn)程終止:
C程序的終止分為兩種: 正常終止和異常終止.正常終止分為: return, exit, _exit, _Exit, pthreade_exit異常中指分為: abort, SIGNAL, 線程響應(yīng)取消。正常終止的前4種, 即exit系列函數(shù).
3、 atexit終止處理程序:
ISO C規(guī)定, 一個(gè)進(jìn)程最對可登記32個(gè)終止處理函數(shù), 這些函數(shù)由exit按登記相反的順序自動調(diào)用. 如果同一函數(shù)登記多次, 也會被調(diào)用多次.
原型如下:
#include
int atexit(void (*func)(void));
其中參數(shù)是一個(gè)函數(shù)指針, 指向終止處理函數(shù), 該函數(shù)無參無返回值.
擴(kuò)展資料
exit函數(shù)和return函數(shù)的主要區(qū)別:
1)exit用于在程序運(yùn)行的過程中隨時(shí)結(jié)束程序,exit的參數(shù)是返回給OS的。main函數(shù)結(jié)束時(shí)也會隱式地調(diào)用exit函數(shù)。
exit函數(shù)運(yùn)行時(shí)首先會執(zhí)行由atexit()函數(shù)登記的函數(shù),然后會做一些自身的清理工作,同時(shí)刷新所有輸出流、關(guān)閉所有打開的流并且關(guān)閉通過標(biāo)準(zhǔn)I/O函數(shù)tmpfile()創(chuàng)建的臨時(shí)文件。
exit是結(jié)束一個(gè)進(jìn)程,它將刪除進(jìn)程使用的內(nèi)存空間,同時(shí)把錯(cuò)誤信息返回父進(jìn)程;而return是返回函數(shù)值并退出函數(shù)。
通常情況:exit(0)表示程序正常, exit(1)和exit(-1)表示程序異常退出,exit(2)表示表示系統(tǒng)找不到指定的文件。在整個(gè)程序中,只要調(diào)用exit就結(jié)束(當(dāng)前進(jìn)程或者在main時(shí)候?yàn)檎麄€(gè)程序)。
2)return是語言級別的,它表示了調(diào)用堆棧的返回;return( )是當(dāng)前函數(shù)返回,當(dāng)然如果是在主函數(shù)main, 自然也就結(jié)束當(dāng)前進(jìn)程了,如果不是,那就是退回上一層調(diào)用。
在多個(gè)進(jìn)程時(shí)。如果有時(shí)要檢測上個(gè)進(jìn)程是否正常退出。就要用到上個(gè)進(jìn)程的返回值,依次類推。而exit是系統(tǒng)調(diào)用級別的,它表示了一個(gè)進(jìn)程的結(jié)束。
3)exit函數(shù)是退出應(yīng)用程序,并將應(yīng)用程序的一個(gè)狀態(tài)返回給OS,這個(gè)狀態(tài)標(biāo)識了應(yīng)用程序的一些運(yùn)行信息。
- 3 回答
- 0 關(guān)注
- 1647 瀏覽
添加回答
舉報(bào)