更改以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
,否则就没有子进程。对不起,我的意思是“被另一个进程占用”