全局變量是靜態變量,在整個程序的生命週期都存在,那麼多進程可否經過全局變量(即靜態變量)進行通訊?程序員
答案是不能夠生命週期
首先咱們先回顧子進程的誕生和其運行原理。進程
父進程經過fork來複製出一個子進程的副本,根據原理,子進程擁有父進程的一份完整數據拷貝。內存
同時因爲fork時按頁複製數據太耗時,因而子進程在剛被fork出來的時候,讀取的實際上是父進程中的內存數據(因此,這時候也能夠說靜態變量是共享的)多進程
可是, 當父子進程中的一方對靜態變量(其實不僅是靜態變量,任何內存中的東西都是這樣)進行寫入操做時,就會觸發寫時複製機制,這個變量將在子進程中產生一個新的空間來存放,因而變量再也不共享。變量
因此,父進程和子進程中的變量是不能夠被共享的,在程序員和進程的角度來看,每一個進程的內存空間都是屬於它本身的。原理