子程序建立以後,會繼承父程序的全域性變數,但是繼承的是父程序剛開始全域性變數的值。
但是子程序建立以後,子程序修改了變數,或者父程序修改了全域性變數的值,父子程序就互相都不影響了。
/*用訊號模擬司機售票員問題:建立子程序代表售票員,父程序代表司機 ,同步過程如下:
1 售票員捕捉sigint(代表開車),發sigusr1給司機,
司機捕捉到該訊號之後列印(「move to next station」)。
2 售票員捕捉sigquit(代表靠站),發sigusr2給司機,
司機捕捉到該訊號之後列印(「stop the bus」)。
3 司機捕捉sigtstp(代表車到總站),發sigusr1給售票員,
售票員捕捉到該訊號之後列印(「all get off the bus」)。
*/
#include #include #include #include #include #include #include static pid_t pid_child, pid_parent;
void child_handler(int sig)
if (sig == sigquit)
if (sig == sigusr1)
printf("all get off the bus\n");
}
void parent_handler(int sig)
int main(void)
else if (ret == 0)
} else
} return 0;
}
static全域性變數 全域性變數
1 全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同。這兩者的區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是...
PHP中全域性變數和超全域性變數
自定義全域性變數的作用域為當前的指令碼檔案的任意位置 函式或者方法啊之類的 但是要想用它們必須先執行一下 global variable語句 variable為要使用的全域性變數 或者是使用 global 變數名字 來呼叫。超全域性變數作用於也是為當前的指令碼檔案的任意位置,在使用的時候無需先執行 ...
gdb獲取程序的全域性變數
0 前言 在程式執行過程中,我們經常需要檢視一些變數的情況以此來判斷當前程式的運 況,對於嵌入式linux裝置而言,最常見的就是填加相應的列印資訊至控制台或是寫入到日誌檔案中,這兩種方式在本質上可以認為是類似的,只不過前者是將控制台作為輸出,而後者是以日誌檔案作為輸出。因為增加列印檢視變數,需要重新...