詳解C語言中return與exit的區(qū)別
目前創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、秦都網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
1,exit用于在程序運行的過程中隨時結(jié)束程序,exit的參數(shù)是返回給OS的。main函數(shù)結(jié)束時也會隱式地調(diào)用exit函數(shù)。exit函數(shù)運行時首先會執(zhí)行由atexit()函數(shù)登記的函數(shù),然后會做一些自身的清理工作,同時刷新所有輸出流、關(guān)閉所有打開的流并且關(guān)閉通過標準I/O函數(shù)tmpfile()創(chuàng)建的臨時文件。exit是結(jié)束一個進程,它將刪除進程使用的內(nèi)存空間,同時把錯誤信息返回父進程,而return是返回函數(shù)值并退出函數(shù)
2,return是語言級別的,它表示了調(diào)用堆棧的返回;而exit是系統(tǒng)調(diào)用級別的,它表示了一個進程的結(jié)束。
3,exit函數(shù)是退出應(yīng)用程序,并將應(yīng)用程序的一個狀態(tài)返回給OS,這個狀態(tài)標識了應(yīng)用程序的一些運行信息。
4,和機器和操作系統(tǒng)有關(guān)一般是 0 為正常退出 非0 為非正常退出
5,void exit(int status);
6,atexit()函數(shù)的參數(shù)是一個函數(shù)指針,函數(shù)指針指向一個沒有參數(shù)也沒有返回值的函數(shù)。atexit()的函數(shù)原型是:int atexit (void (*)(void));在一個程序中最多可以用atexit()注冊32個處理函數(shù),這些處理函數(shù)的調(diào)用順序與其注冊的順序相反,也即最先注冊的最后
調(diào)用,最后注冊的最先調(diào)用。
一般程序執(zhí)行到 main() 的結(jié)束就完成了, 如果想在程序結(jié)束時做一些事情, 可以嘗試著用這個函數(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; }
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!