我在我的C代码中调用execv
来启动可执行文件,但我想将其工作目录设置为自定义。
例如,在一种情况下,我正在启动ls
,但它列出了我原始程序目录中的文件。但我想将工作目录设置为自定义。我将如何实现它,这样,我将其设置为/usr/bin
,ls
将列出该目录中的文件。并且不要给我ls
的具体解决方案,这只是一个例子。
答案 0 :(得分:14)
在成功fork(2)
之后使用chdir(2)
,然后执行:
switch (fork()) {
case 0:
chdir(newpath);
execvp(...);
break;
}