exit()
和 atexit()
是 C 語言中用于處理程序退出和執行清理操作的兩個函數
exit()
函數是一個標準庫函數,用于終止程序的執行。當程序調用 exit()
時,它將立即停止執行,并返回給定的狀態碼(通常為 0 表示成功,非零值表示錯誤)。在程序退出之前,exit()
會自動關閉所有打開的文件流、釋放分配的內存等。如果你需要在程序退出時執行特定的清理操作,可以使用 atexit()
函數來注冊一個或多個清理函數。atexit()
函數允許你在程序退出時注冊一個或多個清理函數。這些清理函數將在 exit()
被調用時執行,通常用于釋放資源、關閉文件等。當你調用 atexit()
時,傳遞給它的函數指針將被添加到一個清理函數列表中。在程序退出時,這些清理函數將按照后進先出(LIFO)的順序依次執行。下面是一個簡單的示例,展示了如何使用 atexit()
和 exit()
函數:
#include<stdio.h>
#include <stdlib.h>
void cleanup1(void) {
printf("Cleanup function 1 called.\n");
}
void cleanup2(void) {
printf("Cleanup function 2 called.\n");
}
int main(void) {
atexit(cleanup1);
atexit(cleanup2);
printf("Main function executed.\n");
exit(0);
}
輸出:
Main function executed.
Cleanup function 2 called.
Cleanup function 1 called.
在這個示例中,我們注冊了兩個清理函數 cleanup1()
和 cleanup2()
。當程序調用 exit(0)
時,這兩個清理函數將按照后進先出的順序執行。