天天看點

【Linux基礎】exit和_exit函數說明

在系統中有大量的程序時,有可能會讓系統資源消耗殆盡。是以,要在用完程序後終止程序。Linux用到的函數為exit和_exit函數。當程式執行exit和_exit時,程序會條件地停止所有操作,終止本程序的運作。這兩個數的差別如圖 7‑2所示:
【Linux基礎】exit和_exit函數說明

01.jpg (12.66 KB, 下載下傳次數: 0)

下載下傳附件 儲存到相冊 設為封面

2013-6-6 10:55 上傳

從圖中可以看出,_exit函數的作用是:直接使程序停止運作,清除其使用記憶體空間,并清除其在核心中的各種資料結構;exit函數則在這些基礎上作了一些動作,在執行退出之前加了若幹道工序。Exit函數和 _exit函數最大的差別就在于exit函數在調用exit系統調用前要檢查檔案的打開情況,把檔案緩沖區中的内容寫回檔案。就是圖中的“清理I/0緩沖”。 2. exit和_exit函數文法

【Linux基礎】exit和_exit函數說明

02.jpg (45.14 KB, 下載下傳次數: 0)

下載下傳附件 儲存到相冊 設為封面

2013-6-6 10:56 上傳

3. exit和_exit函數執行個體 print函數使用的是緩沖I/0方式,該函數在遇到“\n”換行符時自動從緩沖區中将記錄讀出。以下執行個體就是利用此性質來進行比較。 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<sys/types.h> int main() { pid_t result; result=fork(); if(result==1) { perror("fork fail"); exit(0); } else if(result==0) { printf("testing _exit()\n"); printf("this is the content in buffer"); _exit(0); } else { printf("testing exit()\n"); printf("this is the content in buffer"); exit(0); } } 運作結果為: [[email protected] exit]#./exit testing _exit() testing exit() this is the content in buffer 從執行個體結果來看,exit函數前的字元串輸出了兩句,_exit()函數前的字元串輸出一句。這也說明調用exit函數時,緩沖區的記錄能正常輸出;而調用_exit函數時,緩沖區中的記錄無法輸出。

本文轉載于唯C教育,【Linux基礎】exit和_exit函數說明

http://www.weicedu.com/forum.php?mod=viewthread&tid=113&fromuid=4

(出處: http://www.weicedu.com/)

繼續閱讀