1、程序終止
a)程序終止的8種方式
從main返回
呼叫exit
呼叫_exit或_exit
最後乙個執行緒從其啟動程序返回
最後乙個執行緒呼叫pthread_exit
呼叫abort
接到乙個訊號並終止
最後乙個執行緒對取消請求做出響應
b)exit函式
_exit和_exit立即進入核心,exit則先執行一些清理處理(包括呼叫執行終止處理程式,關閉所有標準io流等)然後進入核心
exit函式總是執行乙個標準io庫的清理關閉操作,為所有開啟流呼叫fclose函式。所有緩衝輸出資料都被沖洗(寫到檔案上)
若main的返回型別是整型,並且main執行到最後一條語句時返回,那麼該程序的終止狀態是0
exit(0) 等價於return(0)
echo $? 列印終止狀態
c)atexit
乙個程序可以登入32個函式,由exit自動呼叫,使用atexit函式來登記這些函式
2、命令列引數
3、儲存器分配
#include
void *malloc(size_t size);
void *calloc(size_t nobj,size_t size);
void *realloc(void *ptr,size_t newsize);
4、環境變數
#include
char *getenv(const char *name);
設定環境變數
putenv
setenv
unsetenv
程序退出(UNIX環境高階程式設計筆記)
如果父程序fork了乙個子程序,父程序先於子程序終止,子程序的父程序將改為init程序。其大致操作是 在乙個程序終止時,核心諸葛檢查所有活動程序,以判斷它是否是正要終止程序的子程序,如果是,則該程序的父程序id就更改為1。核心為每個終止子程序儲存了一定量的資訊,當終止程序的父程序通過wait或wai...
UNIX環境高階程式設計學習筆記 程序
2.程序控制 在提出這個問題的時候,我想了一下,大概就是核心執行的乙個程式 錯誤回答 吧。但是這麼說,連我自己下次看都不明白在說什麼。於是我查了一下,它代表著cpu所能處理的單個任務,及執行例項。在面向程序設計的系統 如早期 unix,linux 2.4及更早版本中 程序是程式的基本執行實體 在面向...
《unix高階環境程式設計》程序環境 程序終止
當核心執行c程式時 使用乙個exec函式執行 在呼叫mian函式前先呼叫乙個特殊的啟動例程。可執行程式檔案將此啟動例程指定為程式的起始位址。下面是c程式啟動和終止的流程,由圖中可以知道,程序的終止根據不同的函式呼叫是不一樣的,其中 exit和 exit函式是終止程序直接進入核心,exit函式則先執行...