我知道cd
是内置的shell,我可以使用system()
来运行它。
但是,可以像cd
一样由exec()
系列运行execvp()
命令吗?
编辑:我只是注意到system("cd")
也是没有意义的。感谢大家的帮助。
最佳答案
exec
加载可执行文件,并用它替换当前程序镜像。正如您正确指出的那样,cd
不是可执行文件,而是内置的shell。因此,您要运行的可执行文件是 shell 本身。当然,这是system()
为您所做的,但是如果您想对其进行明确说明,则可以使用exec
:
execl("/bin/sh", "-c", "cd", (const char *)0);
由于这将替换您当前的过程镜像,因此您应该在
fork()
关闭新过程之后执行此操作。但是,整个过程绝对没有效果。如果要在当前进程中更改目录,请使用
chdir()
。关于c - 使用exec()系列运行 "cd"命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9859903/