我知道这cd是内置的shell,我可以使用运行它system()。
cd
system()
但这有可能cd由exec()家人来执行命令execvp()吗?
exec()
execvp()
编辑:我只是注意到这system("cd")也是没有意义的。感谢大家的帮助。
system("cd")
exec加载 可执行文件 并用它替换当前程序映像。正如您正确指出的那样,cd它 不是 可执行文件,而是内置的shell。因此,您要运行的可执行文件是外壳本身。当然,system()这对您有帮助,但是如果您想对其进行明确说明,则可以使用exec:
exec
execl("/bin/sh", "-c", "cd", (const char *)0);
由于这 将替换 您当前的过程映像,因此您应该在执行fork()新过程后执行此操作。
fork()
但是,整个过程绝对无效。如果要在当前进程中更改目录,请使用chdir()。
chdir()