轉載自https://blog.csdn.net/firefly_2002/article/details/7960595 1. exit用於結束正在運行的整個程式,它將參數返回給OS,把控制權交給操作系統;而return 是退出當前函數,返回函數值,把控制權交給調用函數。 2. exit是系統調用 ...
轉載自https://blog.csdn.net/firefly_2002/article/details/7960595
1. exit用於結束正在運行的整個程式,它將參數返回給OS,把控制權交給操作系統;而return 是退出當前函數,返回函數值,把控制權交給調用函數。
2. exit是系統調用級別,它表示一個進程的結束;而return 是語言級別的,它表示調用堆棧的返回。
3. 在main函數結束時,會隱式地調用exit函數,所以一般程式執行到main()結尾時,則結束主進程。exit將刪除進程使用的記憶體空間,同時把錯誤信息返回給父進程。
4. void exit(int status); 一般status為0,表示正常退出,非0表示非正常退出。
1、exit函數和return函數的主要區別是:
1)exit用於在程式運行的過程中隨時結束程式,其參數是返回給OS的。也可以這麼講:exit函數是退出應用程式,並將應用程式的一個狀態返回給OS,這個狀態標識了應用程式的一些運行信息。
main函數結束時也會隱式地調用exit函數,exit函數運行時首先會執行由atexit()函數登記的函數,然後會做一些自身的清理工作,同時刷新所有輸出流、關閉所有打開的流並且關閉通過標準I/O函數tmpfile()創建的臨時文件。
exit是系統調用級別的,它表示了一個進程的結束,它將刪除進程使用的記憶體空間,同時把錯誤信息返回父進程。通常情況:exit(0)表示程式正常, exit(1)和exit(-1)表示程式異常退出,exit(2)表示系統找不到指定的文件。在整個程式中,只要調用exit就結束。
2)return是語言級別的,它表示了調用堆棧的返回;return是返回函數值並退出函數,通常0為正常退出,非0為非正常退出,請註意,如果是在主函數main, 自然也就結束當前進程了(也就是說,在main()裡面,你可以用return n,也能夠直接用exit(n)來做),如果不是在main函數中,那就是退回上一層調用。在多個進程時,如果有時要檢測上個進程是否正常退出,就要用到上個進程的返回值。