UNIX環境高階程式設計學習筆記六 程序控制部分習題

2021-10-09 16:23:45 字數 1185 閱讀 9999

#include

"apue.h"

int globvar =6;

/* external variable in initialized data */

intmain

(void

)else

if(pid ==0)

/* parent continues here */

printf

("pid = %ld, glob = %d, var = %d\n",(

long

)getpid()

, globvar,

var)

;exit(0);}

在ubuntu18中這樣的改變似乎並不會影響輸出,仍然能夠正確的輸出。

當在子程序exit(0)前加入fclose(stdout)後,再列印出printf的返回值,結果如下:

由結果可知,當模擬exit(0)關閉了標準輸出流後,printf函式將會輸出錯誤。

#include

"apue.h"

static

voidf1(

void),

f2(void);

intmain

(void

)static

voidf1(

void

)static

voidf2(

void

)

執行結果也如預期一樣發生了錯誤:

這裡的原因就是所謂的乙個程式的生命週期:程式起始於父程序開始執行,結束于父程序終止。如果在多程序環境中父程序終止但子程序還在執行,系統會認為此程式已經完成。**但是,實際上子程序可能還未結束,仍在輸出。**這時,就會出現輸出混亂的問題。

殭屍程序是指程序呼叫了exit函式,但父程序未對其進行終止處理,導致其占用乙個程序項,雖然其沒佔任何資源也無法排程,但其實際存在於程序表中。

UNIX環境高階程式設計學習筆記

include include include include int main int argc,char argv err sys can t open s argv 1 while dirp readdir dp null printf s n dirp d name closedir dp ...

UNIX環境高階程式設計學習筆記 程序

2.程序控制 在提出這個問題的時候,我想了一下,大概就是核心執行的乙個程式 錯誤回答 吧。但是這麼說,連我自己下次看都不明白在說什麼。於是我查了一下,它代表著cpu所能處理的單個任務,及執行例項。在面向程序設計的系統 如早期 unix,linux 2.4及更早版本中 程序是程式的基本執行實體 在面向...

Unix環境高階程式設計學習筆記 二

三種主要的標準 iso c ieee posix single unix specification xsi 一層一層遞增,ieee posix 是iso c的超集。xsi 是posix的超集。要想提高軟體的可移植性,就必須有限制 編譯時限制 因為某些限制是固定的,則可以在標頭檔案中定義。執行時限制...