exit和return区别
From: http://blog.163.com/liuqiang_mail@126/blog/static/109968875201241210473787/
退出和返回
退出狀態(exit status)
函數返回一個被稱為退出狀態的值. 退出狀態可以由return 來指定statement, 否則函數的
退出狀態是函數最后一個執行命令的退出狀態(0 表示成功,非0 表示出錯代碼). 退出狀態
(exit status)可以在腳本中由$? 引用. 這個機制使腳本函數也可以像C 函數一樣有一個"
返回值".
return
終止一個函數.return 命令[1]可選地帶一個整數參數,這個整數作為函數的"返回值"返回
給調用此函數的腳本,并且這個值也被賦給變量$?.
exit函數和return函數的主要區別是:
1)exit用于在程序運行的過程中隨時結束程序,其參數是返回給OS的。也可以這么講:exit函數是退出應用程序,并將應用程序的一個狀態返回給OS,這個狀態標識了應用程序的一些運行信息。
main函數結束時也會隱式地調用exit函數,exit函數運行時首先會執行由atexit()函數登記的函數,然后會做一些自身的清理工作,同時刷新所有輸出流、關閉所有打開的流并且關閉通過標準I/O函數tmpfile()創建的臨時文件。
exit是系統調用級別的,它表示了一個進程的結束,它將刪除進程使用的內存空間,同時把錯誤信息返回父進程。通常情況:exit(0)表示程序正常, exit(1)和exit(-1)表示程序異常退出,exit(2)表示系統找不到指定的文件。
?2)return是語言級別的,它表示了調用堆棧的返回;return是返回函數值并退出函數,通常0為正常退出,非0為非正常退出,請注意,如果是在主函數main, 自然也就結束當前進程了(也就是說,在main()里面,你可以用return n,也能夠直接用exit(n)來做),如果不是在main函數中,那就是退回上一層調用。在多個進程時,如果有時要檢測上個進程是否正常退出,就要用到上個進程的返回值。
?2、進程環境與進程控制
如果exit(int n)是在main函數里被調用的,那么exit(int n)就直接退出程序,并返回一個int型的值。一般在shell下面,運行一個程序,然后使用命令echo $?就能得到該程序的返回值,也就是退出值。理論上exit可以返回小于256的任何整數,返回的不同數值主要是給調用者作不同處理的。
對于單獨的進程exit的返回值是返回給操作系統的,但如果是多進程,則是返回給父進程的。父進程里面調用waitpid()等函數得到子進程退出的狀態,以便作不同處理。根據相應的返回值來讓調用者作出相應的處理。
總的說來,exit(int n)就是當前進程把其控制權返回給調用該子程序的主程序, 括號里的是返回值,告訴調用程序該程序的運行狀態。
總結
以上是生活随笔為你收集整理的exit和return区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对软件工程这门课的收获与总结
- 下一篇: [改善Java代码]不要覆写静态方法