2014-01-05 72 views
0
{ 
set GAME=CRICKET" 
if(fork()=0) 
{ 
    set GAME="FOOTBALL" 
    echo $GAME 
    } 
sleep(5); 
echo $GAME 
} 

我的問題是,遊戲是繼承到孩子和改變。 現在父母中的GAME發生了什麼? 「CRICKET」是否仍然保持不變?Unix變量繼承使用

+0

爲什麼問「當我運行這個代碼時會發生什麼?」 - 只需自己運行並看看! –

+0

我無法捕捉這裏使用的語言,但如果你假裝它是C,答案是「是的,它仍然沒有改變」。 – Netch

+0

@Netch:謝謝。其實我對unix中的變量繼承的追求(不依賴於語言).Child Process繼承變量並對其進行更改。現在,變量值不應在父進程中更改(猜測它是簡單的邏輯)。 –

回答

1

Unix環境變量是特定於進程的。

當你分叉一個進程時,這個孩子得到一個父母環境的副本。

孩子做出的任何改變都會影響到它的副本,並且不會影響到父母的環境變量。