Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改以execve()启动的子进程的当前目录_C_Linux_Environment Variables - Fatal编程技术网

更改以execve()启动的子进程的当前目录

更改以execve()启动的子进程的当前目录,c,linux,environment-variables,C,Linux,Environment Variables,我想用execve()更改子进程的环境变量,这样,如果子进程在当前目录中打开一个文件,它就会链接到另一个目录。要完成此任务,我必须更改哪些环境变量$PWD不工作 例如: char *args[] = { .... }; char *env[] = { "PWD=/home/anydirectory_I_Wish", NULL }; execve( mycode, args, env); 没有环境变量可以实现这一点 传递给系统调用(如open(2))的相对路径名(如foo或b

我想用
execve()
更改子进程的环境变量,这样,如果子进程在当前目录中打开一个文件,它就会链接到另一个目录。要完成此任务,我必须更改哪些环境变量<代码>$PWD不工作

例如:

char *args[] = { .... };
char *env[] = { "PWD=/home/anydirectory_I_Wish", NULL };
execve( mycode, args, env);

没有环境变量可以实现这一点

传递给系统调用(如
open(2)
)的相对路径名(如
foo
bar/foo
)始终相对于当前工作目录(cwd)进行解析。cwd是流程的一个属性,只能通过系统调用
chdir
fchdir
进行更改(可能还缺少其他一些模糊的方式)。但是在解析相对路径名时既不使用
PWD
也不使用任何其他环境变量


将环境变量
PWD
设置为cwd的名称是Shell的一个特性,以便于脚本访问它。其他程序不一定需要以任何特殊方式处理
PWD
,或者在cwd更改时更新它。特别是,操作系统不能保证在任何任意程序中将
PWD
设置为cwd的名称。

没有环境变量可以实现这一点

传递给系统调用(如
open(2)
)的相对路径名(如
foo
bar/foo
)始终相对于当前工作目录(cwd)进行解析。cwd是流程的一个属性,只能通过系统调用
chdir
fchdir
进行更改(可能还缺少其他一些模糊的方式)。但是在解析相对路径名时既不使用
PWD
也不使用任何其他环境变量


将环境变量
PWD
设置为cwd的名称是Shell的一个特性,以便于脚本访问它。其他程序不一定需要以任何特殊方式处理
PWD
,或者在cwd更改时更新它。特别是,操作系统不保证在任何任意程序中将
PWD
设置为cwd的名称。

您可以使用
chdir()
更改当前工作目录PWD只是一个环境变量,只有命令可以更改当前目录子进程在哪里
execve
不会创建新的进程,除非您没有显示
fork
,否则没有子进程。对不起,我的意思是“被另一个进程占用”。您可以使用
chdir()
更改当前的工作目录pwd只是一个环境变量,只有命令才能更改当前目录子进程在哪里
execve
不会创建新进程,除非您没有显示
fork
,否则就没有子进程。对不起,我的意思是“被另一个进程占用”