複製鏈接
請複製以下鏈接發送給好友

Exit()

鎖定
exit()是一個在許多操作系統命令行殼層腳本語言中含有的命令,此命令導致shell或程序終止。如果在交互式命令shell中執行,將會註銷用户的當前會話,或斷開用户當前的控制枱終端連接。函數可以指定一個可選的退出碼,其為一個簡單的整數值,隨後會被返回到父進程。提供該命令的腳本語言包括sh、kshPerlAWKPHPTCL及其他。
中文名
exit()
函數名
exit()
所在頭文件
stdlib.h
用    法
void exit(int status);
參 數
status //程序退出的返回值.

Exit()函數用法

函數名: 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,程序退出的返回值

Exit()程序簡例

#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);

Exit()退出過程

1.調用atexit()註冊的函數(出口函數);按ATEXIT註冊時相反的順序調用所有由它註冊的函數,這使得我們可以指定在程序終止時執行自己的清理動作.例如,保存程序狀態信息於某個文件,解開對共享數據庫上的鎖等。
2.cleanup();關閉所有打開的流,這將導致寫所有被緩衝的輸出,刪除用TMPFILE函數建立的所有臨時文件 [1] 
3.最後調用_exit()函數終止進程。
_exit做3件事:
1、屬於該過程的文件描述符都將被關閉
2、進程的任何子進程都由進程1繼承
3、進程的父節點發送SIGCHLD信號
exit執行完清理工作後就調用_exit來終止進程。
參考資料
  • 1.    徐華, 徐澄圻. 對基於EXIT圖的LDPC碼優化算法的改進[J]. 應用科學學報, 2007, 25(2):134-140.