exit與 exit的區別

2021-08-31 04:31:46 字數 638 閱讀 4135

當我們要退出乙個程序的時候,我們可以使用exit()和_exit(),那麼它們之間到底有什麼區別呢?

1.exit()是c標準庫函式,而_exit()是linux系統呼叫

2.呼叫exit()之後,程序退出,申請的空間被釋放,同時釋放核心中的各種資料結構(pcb),並檢查檔案的開啟情況,將記憶體緩衝區中的資料寫入到檔案中;而呼叫_exit()之後,檔案緩衝區中的資料不會寫入到檔案中,造成資料的丟失

下面我們來看兩個例子:

(1)使用_exit()

#include#includeint main()

fwrite(str,5,1,f);

_exit(1);

return 0;

}執行程式之後,開啟檔案aaa.txt,可以發現aaa.txt中沒有寫入的內容,原因是使用_exit()退出程序的時候並沒有將緩衝區中的資料寫入到檔案中

(2)使用exit()

#include#includeint main()

fwrite(str,5,1,f);

exit(1);

return 0;

}執行程式之後,開啟檔案aaa.txt,可以發現aaa.txt中寫入了內容,原因是使用exit()退出程序的時候將緩衝區中的資料寫入到檔案中

exit 與 exit 的區別

從圖中可以看出,exit 函式的作用是 直接使程序停止執行,清除其使用的記憶體空間,並清除其在核心的各種資料結構 exit 函式則在這些基礎上做了一些小動作,在執行退出之前還加了若干道工序。exit 函式與 exit 函式的最大區別在於exit 函式在呼叫exit 系統呼叫前要檢查檔案的開啟情況,把...

exit 與 exit 的區別

從圖中可以看出,exit 函式的作用是 直接使程序停止執行,清除其使用的記憶體空間,並清除其在核心的各種資料結構 exit 函式則在這些基礎上做了一些小動作,在執行退出之前還加了若干道工序。exit 函式與 exit 函式的最大區別在於exit 函式在呼叫exit 系統呼叫前要檢查檔案的開啟情況,把...

linux下exit 與 exit 的區別

void exit int staus 函式,在標頭檔案 include void exit int status 函式,在標頭檔案 include 中 在linux c中描述兩者區別是 exit返回後直接返回核心,而exit要進行清除工作,那麼兩者到底有什麼不同呢。編寫個小程式就很容易看出來 in...