c++ exit() 函數

函數用法

編輯shell

函數名: exit()
所在頭文件:stdlib.h(若是是」VC6.0「的話頭文件爲:windows.h)
功 能: 關閉全部文件,終止正在執行的進程。
exit(0)表示正常退出,
exit(x)(x不爲0)都表示異常退出,這個x是返回給操做系統(包括UNIX,Linux,和MS DOS)的,以供其餘程序使用。
stdlib.h: void exit(int status);//參 數status,程序退出的返回值

程序簡例

編輯
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
int  main( int  argc, char *argv[])
{
int  status;
printf ( "Enter either 1 or 2\n" );
status=getch();
/*Sets DOS error level*/
exit (status- '0' );
/*Note:this line is never reached*/
return  0;
}
exit()和return的區別:
按照ANSI C,在最初調用的main()中使用return和exit()的效果相同。
但要注意這裏所說的是「最初調用」。若是main()在一個遞歸程序中,exit()仍然會終止程序;但return將
控制權移交給遞歸的前一級,直到最初的那一級,此時return纔會終止程序。return和exit()的另外一個區別
在於,即便在除main()以外的函數中調用exit(),它也將終止程序。
_exit()與exit的區別:
頭文件:
exit:#include<stdlib.h>
_exit:#include<unistd.h>
_exit()函數:直接使進程中止運行,清除其使用的內存空間,並銷燬其在內核中的各類數據結構;
exit()函數則在這些基礎上做了一些包裝,在執行退出以前加了若干道工序。
exit()函數與_exit()函數最大的區別就在於 exit()函數在調用 exit 系統調用以前要檢查文件的打開狀況,把文件緩衝區中的內容寫回文件。
注:exit()就是退出,傳入的參數是程序退出時的狀態碼,0表示正常退出,其餘表示非正常退出,通常都用-1或者1,標準C裏有EXIT_SUCCESS和EXIT_FAILURE兩個宏,用exit(EXIT_SUCCESS);

退出過程

編輯
  1.調用atexit()註冊的函數(出口函數);按ATEXIT註冊時相反的順序調用全部由它註冊的函數,這使得咱們能夠指定在程序終止時執行本身的清理動做.例如,保存程序狀態信息於某個文件,解開對共享數據庫上的鎖等。
  2.cleanup(); 關閉全部打開的流,這將致使寫全部被緩衝的輸出,刪除用TMPFILE函數創建的全部臨時文件 [1]   。
  3.最後調用_exit()函數終止進程。
  _exit作3件事:
  一、屬於該過程的文件描述符都將被關閉
二、進程的任何子進程都由進程1繼承
三、進程的父節點發送SIGCHLD信號
exit執行完清理工做後就調用_exit來終止進程。
//==========================================================EX

exit(0):正常運行程序並退出程序;數據庫

exit(1):非正常運行致使退出程序;windows

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

詳細說:函數

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

  2. return是語言級別的,它表示了調用堆棧的返回;而exit是系統調用級別的,它表示了一個進程的結束。
  3. return是函數的退出(返回);exit是進程的退出。
spa

  4. return是C語言提供的,exit是操做系統提供的(或者函數庫中給出的)。操作系統

  5. return用於結束一個函數的執行,將函數的執行信息傳出個其餘調用函數使用;exit函數是退出應用程序,刪除進程使用的內存空間,並將應用程序的一個狀態返回給OS,這個狀態標識了應用程序的一些運行信息,這個信息和機器和操做系統有關,通常是 0 爲正常退出, 非0 爲非正常退出。code

  6. 非主函數中調用return和exit效果很明顯,可是在main函數中調用return和exit的現象就很模糊,多數狀況下現象都是一致的。
繼承

 

exit(0)與exit(1)對你的程序來講,沒有區別。對使用你的程序的人或者程序來講,區別可就大了。通常來講,exit 0 能夠告知你的程序的使用者:你的程序是正常結束的。若是 exit 非 0 值,那麼你的程序的使用者一般會認爲你的程序產生了一個錯誤。以 shell 爲例,在 shell 中調用完你的程序以後,用 echo $? 命令就能夠看到你的程序的 exit 值。在 shell 腳本中,一般會根據上一個命令的 $? 值來進行一些流程控制。
相關文章
相關標籤/搜索