簡要對比C語言中三個(gè)用于退出進(jìn)程的函數(shù)
C語言_exit()函數(shù):結(jié)束進(jìn)程執(zhí)行
頭文件:
#include <unistd.h>
定義函數(shù):
void _exit(int status);
函數(shù)說明:_exit()用來立刻結(jié)束目前進(jìn)程的執(zhí)行, 并把參數(shù)status 返回給父進(jìn)程, 并關(guān)閉未關(guān)閉的文件. 此函數(shù)調(diào)用后不會返回, 并且會傳遞SIGCHLD 信號給父進(jìn)程, 父進(jìn)程可以由wait 函數(shù)取得子進(jìn)程結(jié)束狀態(tài).
附加說明:_exit ()不會處理標(biāo)準(zhǔn)I/O 緩沖區(qū), 如要更新緩沖區(qū)請使用exit ().
C語言on_exit()函數(shù):設(shè)置程序正常結(jié)束前調(diào)用的函數(shù)
頭文件:
#include <stdlib.h>
定義函數(shù):
int on_exit(void (* function) (int void*), void *arg);
函數(shù)說明:on_exit()用來設(shè)置一個(gè)程序正常結(jié)束前調(diào)用的函數(shù). 當(dāng)程序通過調(diào)用exit()或從main 中返回時(shí), 參數(shù)function 所指定的函數(shù)會先被調(diào)用, 然后才真正由exit()結(jié)束程序. 參數(shù)arg 指針會傳給參數(shù)function函數(shù), 詳細(xì)情況請見范例.
返回值:如果執(zhí)行成功則返回0, 否則返回-1, 失敗原因存于errno 中.
范例
#include <stdlib.h>
void my_exit(int status, void *arg)
{
printf("before exit()!\n");
printf("exit (%d)\n", status);
printf("arg = %s\n", (char*)arg);
}
main()
{
char * str = "test";
on_exit(my_exit, (void *)str);
exit(1234);
}
執(zhí)行:
before exit()! exit (1234) arg = test
C語言atexit()函數(shù):設(shè)置程序正常結(jié)束前調(diào)用的函數(shù)
頭文件:
#include <stdlib.h>
定義函數(shù):
int atexit (void (*function) (void));
函數(shù)說明:atexit()用來設(shè)置一個(gè)程序正常結(jié)束前調(diào)用的函數(shù). 當(dāng)程序通過調(diào)用exit()或從main 中返回時(shí), 參數(shù)function 所指定的函數(shù)會先被調(diào)用, 然后才真正由exit()結(jié)束程序.
返回值:如果執(zhí)行成功則返回0, 否則返回-1, 失敗原因存于errno 中.
范例
#include <stdlib.h>
void my_exit(void)
{
printf("before exit () !\n");
}
main()
{
atexit (my_exit);
exit(0);
}
執(zhí)行:
before exit()!
相關(guān)文章
詳解_beginthreadex()創(chuàng)建線程
這篇文章主要介紹了詳解_beginthreadex()創(chuàng)建線程,使用_beginthreadex(),需要的頭文件支持#include <process.h> 下面我們就來看看具體的實(shí)現(xiàn)吧2022-01-01
Visual Studio Community 2022(VS2022)安裝圖文方法
這篇文章主要介紹了Visual Studio Community 2022(VS2022)安裝方法,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09
C++?Qt開發(fā)之使用QNetworkAccessManager實(shí)現(xiàn)Web網(wǎng)頁訪問
使用VS Code進(jìn)行Qt開發(fā)的實(shí)現(xiàn)

