一尘不染

使用exec()系列运行“ cd”命令

linux

我知道这cd是内置的shell,我可以使用运行它system()

但这有可能cdexec()家人来执行命令execvp()吗?

编辑:我只是注意到这system("cd")也是没有意义的。感谢大家的帮助。


阅读 731

收藏
2020-06-03

共1个答案

一尘不染

exec加载 可执行文件 并用它替换当前程序映像。正如您正确指出的那样,cd不是
可执行文件,而是内置的shell。因此,您要运行的可执行文件是外壳本身。当然,system()这对您有帮助,但是如果您想对其进行明确说明,则可以使用exec

execl("/bin/sh", "-c", "cd", (const char *)0);

由于这 将替换 您当前的过程映像,因此您应该在执行fork()新过程后执行此操作。

但是,整个过程绝对无效。如果要在当前进程中更改目录,请使用chdir()

2020-06-03