Unix環境高階程式設計筆記 7 程序環境

2021-08-27 15:24:59 字數 814 閱讀 6971

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函式則先執行...