程序的終止

2021-08-01 06:02:17 字數 1275 閱讀 8605

有五種方法使程序終止:

1.正常終止

(1)在main函式內執行return語句,這等效於呼叫exit。

(2)呼叫exit函式。此函式由ansi c定義,其操作包括呼叫各終止處理程式,然後關閉所有標準i/o流等。

(3)呼叫_exit系統呼叫函式,此函式由exit呼叫。

2.異常終止

(1)呼叫abort。

(2)由乙個訊號終止。

下面介紹exit和_exit函式。

例子:設計乙個程式,要求子程序和父程序都在顯示輸出一些文字後分別呼叫exit和_exit函式終止程序。

1 #include2 #include3 #include4 #include5 int main()

6 14 else if(pid ==0 )

15

20 else

21

26 27 return 0;

28 }

顯示結果:

測試終止程序的_exit函式!

測試終止程序的exit函式!

目前為父程序,這一行我們用快取!

由於printf()函式使用的是緩衝i/o方式,在遇到「\n」換行符時,自動從緩衝區將記錄讀出。上例子中可以看出,呼叫exit函式時,緩衝區中的記錄能正常輸出;而呼叫_exit時,緩衝區中的記錄無法輸出。

_exit()函式的作用是直接使程序終止執行,清除其使用的記憶體空間,並清除其在核心中的各種資料結構;exit()函式則在執行退出之前加了若干道工序,exit函式在呼叫exit系統之前要檢視檔案的開啟情況,把檔案緩衝區中的內容寫回檔案。exit和_exit函式的區別如下圖:

在liunx的標出函式庫中,有一種被稱作「緩衝i/o」操作,就是對應每乙個開啟的檔案,在記憶體中都有一片緩衝區,每次讀寫檔案時,都在緩衝區裡讀取,寫入的。每次寫入檔案時,等滿足了一定條件才將緩衝區中的內容一次性寫入檔案,這種技術大大增加了檔案讀寫的速度。但是,有時沒有滿足選定條件,資料還只是儲存在緩衝區,這時用_exit函式直接結束程序關閉,緩衝去中的資料就會丟失。因此,若想保證資料的完成性,就一定要使用exit函式終止程序。

注:因為"\n"的作用可以修改一下這兩句**看看:

printf("目前為子程序,這一樣我們用快取!\n");

printf("目前為父程序,這一樣我們用快取!\n");

程序的終止

系統呼叫exit 實現程序的終止。exit 在linux系統函式庫stdlib.h中的函式宣告如下 void exit int status exit 只有乙個引數status,稱作程序的退出狀態,父程序可以使用它的低8位。exit 的返回值通常用於指出程序所完成任務的成敗。如果成功,則返回0 如果...

程序的終止

通常採用exit來結束乙個程序 相應的函式呼叫為 include void exit int status int atexit void function void int on exit void function int void void arg void abort void includ...

終止程序的內幕

原文 http blog user17 pjf blog 4213145.html pjf jfpan20000 sina.有來信詢問程序結束的有關問題,下面就這個問題簡單討論一下 下面的討論基於2000,其他nt系統也類似 首先看看乙個應用程式想要強制結束另乙個程序所要做的事 首先獲得目標的程序i...