return與exit 的區別

2021-07-11 12:46:33 字數 1012 閱讀 7520

return

返回函式值,是關鍵字;很明顯,

exit()

是乙個函式。

return

語言提供的,是語言級別的,它表示了呼叫堆疊的返回,是函式的退出(返回

);而exit

是作業系統提供的

(或者函式庫中給出的

),是系統呼叫級別的,它表示了乙個程序的結束。

exit()

退出程式

,把控制權交給作業系統;

return

結束當前函式

,返回函式值

,把控制權交給呼叫函式。

return

用於結束乙個函式的執行,將函式的執行資訊傳出個其他呼叫函式使用;

exit

函式是退出應用程式,刪除程序使用的記憶體空間,並將應用程式的乙個狀態返回給作業系統,這個狀態標識了應用程式的一些執行資訊,這個資訊和機器和作業系統有關,一般是

0 為正常退出,非

0為非正常退出。

非主函式中呼叫

return

和exit

效果很明顯,但是在

main

函式中呼叫

return

和exit

的現象就很模糊,多數情況下現象都是一致的。

在main

函式結束時,會隱式地呼叫

exit

函式,所以一般程式執行到

main()

結尾時,則結束主程序。

exit

將刪除程序使用的記憶體空間,同時把錯誤資訊返回給父程序。

對於單獨的程序

exit

的返回值是返回給作業系統的,但如果是多程序,則是返回給父程序的。父程序裡面呼叫

waitpid()

等函式得到子程序退出的狀態,以便作不同處理。根據相應的返回值來讓呼叫者作出相應的處理。總的說來,

exit()

就是當前程序把其控制權返回給呼叫該子程式的主程式

,括號裡的是返回值

,告訴呼叫程式該程式的執行狀態。

exit與return的區別

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

Exit 與return的區別

第一是在最初呼叫的時候的區別 按照ansi c,在最初呼叫的main 中使用return和exit 的效果相同。但要注意這裡所說的是 最初呼叫 如果main 在乙個遞迴程式中,exit 仍然會終止程式 但return控制權移交給遞迴的前一級,直到最初的那一級,此時return才會終止程式。另乙個是在...

exit與return的區別

exit 是整個程式的結束。exit 0 正常執行程式並退出程式 exit 1 非正常執行導致退出程式 return 是某個函式的結束,並返回結果。return返回函式值,是關鍵字 exit 是乙個函式。return是語言級別的,它表示了呼叫堆疊的返回 而exit是系統呼叫級別的,它表示了乙個程序的...