C 为什么可以';通过设置PWD设置当前工作目录

C 为什么可以';通过设置PWD设置当前工作目录,c,linux,process,C,Linux,Process,我想为一个子程序设置当前工作目录。我将其设置为setenv(“PWD”,“/media”,1)并使用系统(…)启动子级。但是当子进程调用getcwd(0,0)时,它返回/root 我认为子进程应该从其父进程继承环境?POSIX兼容shell将PWD环境变量设置为当前工作目录。但是,实际的当前工作目录是进程本身的一个属性(由使用system或fork生成的子进程继承),需要使用更改 对PWD环境变量的更改不会改变任何内容,并且该变量不一定实际反映当前的工作目录(如果它是由shell以外的内容更改的

我想为一个子程序设置当前工作目录。我将其设置为
setenv(“PWD”,“/media”,1)并使用
系统(…)启动子级。但是当子进程调用
getcwd(0,0)
时,它返回/root


我认为子进程应该从其父进程继承环境?

POSIX兼容shell将
PWD
环境变量设置为当前工作目录。但是,实际的当前工作目录是进程本身的一个属性(由使用
system
fork
生成的子进程继承),需要使用更改


PWD
环境变量的更改不会改变任何内容,并且该变量不一定实际反映当前的工作目录(如果它是由shell以外的内容更改的)。

非常感谢。chdir()似乎有效。但这又引出了另一个问题——为什么setenv()不起作用?我有一个需要为这个孩子设置的env变量列表,很遗憾,我不得不为这个变量使用不同的库函数。谢谢你的解释。