詳解C語(yǔ)言中return與exit的區(qū)別
詳解C語(yǔ)言中return與exit的區(qū)別
1,exit用于在程序運(yùn)行的過(guò)程中隨時(shí)結(jié)束程序,exit的參數(shù)是返回給OS的。main函數(shù)結(jié)束時(shí)也會(huì)隱式地調(diào)用exit函數(shù)。exit函數(shù)運(yùn)行時(shí)首先會(huì)執(zhí)行由atexit()函數(shù)登記的函數(shù),然后會(huì)做一些自身的清理工作,同時(shí)刷新所有輸出流、關(guān)閉所有打開(kāi)的流并且關(guān)閉通過(guò)標(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ù)
2,return是語(yǔ)言級(jí)別的,它表示了調(diào)用堆棧的返回;而exit是系統(tǒng)調(diào)用級(jí)別的,它表示了一個(gè)進(jìn)程的結(jié)束。
3,exit函數(shù)是退出應(yīng)用程序,并將應(yīng)用程序的一個(gè)狀態(tài)返回給OS,這個(gè)狀態(tài)標(biāo)識(shí)了應(yīng)用程序的一些運(yùn)行信息。
4,和機(jī)器和操作系統(tǒng)有關(guān)一般是 0 為正常退出 非0 為非正常退出
5,void exit(int status);
6,atexit()函數(shù)的參數(shù)是一個(gè)函數(shù)指針,函數(shù)指針指向一個(gè)沒(méi)有參數(shù)也沒(méi)有返回值的函數(shù)。atexit()的函數(shù)原型是:int atexit (void (*)(void));在一個(gè)程序中最多可以用atexit()注冊(cè)32個(gè)處理函數(shù),這些處理函數(shù)的調(diào)用順序與其注冊(cè)的順序相反,也即最先注冊(cè)的最后
調(diào)用,最后注冊(cè)的最先調(diào)用。
一般程序執(zhí)行到 main() 的結(jié)束就完成了, 如果想在程序結(jié)束時(shí)做一些事情, 可以嘗試著用這個(gè)函數(shù).
example:
#include...
#include...
void f1(void)
{
printf("exit f1\n");
}
void f2(void)
{
printf("exit f2\n");
}
int main()
{
atexit(f1);
atexit(f2);
printf("exit main\n");
return 0;
}
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
探討C語(yǔ)言中關(guān)鍵字volatile的含義
本篇文章是對(duì)C語(yǔ)言中關(guān)鍵字volatile的含義進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++中關(guān)于union的使用方法說(shuō)明
這篇文章主要介紹了C++中關(guān)于union的使用方法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
C++實(shí)現(xiàn)LeetCode(120.三角形)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(120.三角形),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C++中malloc與free、new與delete的詳解與應(yīng)用
今天小編就為大家分享一篇關(guān)于C++中malloc與free、new與delete的詳解與應(yīng)用,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
C語(yǔ)言利用system調(diào)用系統(tǒng)命令行詳情
這篇文章主要介紹了C語(yǔ)言利用system調(diào)用系統(tǒng)命令行詳情,system就是調(diào)用系統(tǒng)命令行,輸入為字符串,然后把這個(gè)字符串輸出給命令行,讓命令行執(zhí)行。下文的具體內(nèi)容,需要的小伙伴可以參考一下2022-01-01
gazebo里通過(guò)節(jié)點(diǎn)發(fā)布topic讓關(guān)節(jié)轉(zhuǎn)動(dòng)實(shí)現(xiàn)詳解
這篇文章主要介紹了gazebo里通過(guò)節(jié)點(diǎn)發(fā)布topic讓關(guān)節(jié)轉(zhuǎn)動(dòng)實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中數(shù)制轉(zhuǎn)換實(shí)例代碼
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中數(shù)制轉(zhuǎn)換實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03
C++語(yǔ)言基礎(chǔ) this和static關(guān)鍵字
這篇文章主要介紹了C++語(yǔ)言基礎(chǔ) this和static關(guān)鍵字,需要的朋友可以參考下2020-01-01

