exit(0)與exit(1)、return的區別

weixin_30639719發表於2020-04-05
exit(0):正常執行程式並退出程式;

exit(1):非正常執行導致退出程式;

return():返回函式,若在主函式中,則會退出函式並返回一值。

詳細說:

1. return返回函式值,是關鍵字; exit 是一個函式。

2. return是語言級別的,它表示了呼叫堆疊的返回;而exit是系統呼叫級別的,它表示了一個程式的結束。
3. return是函式的退出(返回);exit是程式的退出。

4. return是C語言提供的,exit是作業系統提供的(或者函式庫中給出的)。exit是一個庫函式,exit(1)表示發生錯誤後退出程式,exit(0)表示正常退出。在stdlib.h中exit函式是這樣子定義的:void exit(int status)。這個系統呼叫是用來終止一個程式的,無論在程式中的什麼位置,只要執行exit,程式就會終止程式的執行。講到exit這個系統呼叫,就要提及另外一個系統呼叫,_exit,_exit()函式位於unistd.h中,相比於exit(),_exit()函式的功能最為簡單,直接終止程式的執行,釋放其所使用的記憶體空間,並銷燬在記憶體中的資料結構,而exit()在於在程式退出之前要檢查檔案的狀態,將檔案緩衝區中的內容寫回檔案。

5. return用於結束一個函式的執行,將函式的執行資訊傳出給其他呼叫函式使用;exit函式是退出應用程式,刪除程式使用的記憶體空間,並將應用程式的一個狀態返回給OS或其父程式,這個狀態標識了應用程式的一些執行資訊,這個資訊和機器和作業系統有關,一般是 0 為正常退出, 非0 為非正常退出。

6. 非主函式中呼叫return和exit效果很明顯,但是在main函式中呼叫return和exit的現象就很模糊,多數情況下現象都是一致的。

轉載於:https://www.cnblogs.com/nyist-xsk/p/10572754.html

相關文章