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