?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
在頭文件<stdlib.h>中定義 | ||
---|---|---|
void exit(int exit_code); | (直到C11) | |
_Noreturn void exit(int exit_code); | (自C11以來) |
導(dǎo)致正常程序終止發(fā)生。
執(zhí)行幾個(gè)清理步驟:
傳遞給atexit的函數(shù)被調(diào)用,按照注冊的相反順序
所有C流都被刷新并關(guān)閉
由tmpfile創(chuàng)建的文件被刪除
控制權(quán)返回到主機(jī)環(huán)境。 如果exit_code為零或EXIT_SUCCESS,則返回實(shí)現(xiàn)定義的狀態(tài),表示成功終止。 如果exit_code為EXIT_FAILURE,則返回實(shí)現(xiàn)定義的狀態(tài),表示不成功終止。 在其他情況下,返回實(shí)現(xiàn)定義的狀態(tài)值。
用at_quick_exit注冊的函數(shù)不會(huì)被調(diào)用。
如果一個(gè)程序多次調(diào)用exit或者調(diào)用exit和quick_exit,則行為是不確定的。
如果在調(diào)用使用atexit注冊的函數(shù)期間,行為是不確定的,函數(shù)將以longjmp退出。
從主函數(shù)返回,通過返回語句或到達(dá)函數(shù)結(jié)尾,執(zhí)行exit(),將return語句的參數(shù)(如果使用隱式返回,則返回0)作為exit_code。
exit_code | - | 退出程序的狀態(tài) |
---|
(none).
#include <stdio.h>#include <stdlib.h> int main(void){ FILE *fp = fopen("data.txt","r"); if (fp == NULL) { fprintf(stderr, "error opening file data.txt in function main()\n"); exit(1); } fclose(fp); printf("Normal Return\n");}
輸出:
error opening file data.txt in function main()
C11標(biāo)準(zhǔn)(ISO / IEC 9899:2011):
7.22.4.4退出功能(p:351-352)
C99標(biāo)準(zhǔn)(ISO / IEC 9899:1999):
7.20.4.3退出功能(p:315-316)
C89 / C90標(biāo)準(zhǔn)(ISO / IEC 9899:1990):
4.10.4.3退出功能
abort | 導(dǎo)致程序異常終止(不清除)(功能) |
---|---|
atexit | 注冊要在exit()調(diào)用(函數(shù))上調(diào)用的函數(shù) |
quick_exit(C11) | 導(dǎo)致正常程序終止而沒有完全清理(功能) |
| 用于退出的C ++文檔|