2014-01-05 74 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环境变量是特定于进程的。

当你分叉一个进程时,这个孩子得到一个父母环境的副本。

孩子做出的任何改变都会影响到它的副本,并且不会影响到父母的环境变量。