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

goo*_*ofy 6 c linux shell exec

我知道这cd是一个内置的shell,我可以通过使用它来运行它system().

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

编辑:我只是注意到这system("cd")也毫无意义.谢谢大家的帮助.

orl*_*rlp 12

你最好使用int chdir(const char *path);找到的unistd.h.


Ker*_* SB 12

exec加载可执行文件并用它替换当前程序映像.正如您所指出的,cd不是可执行文件,而是内置的shell.因此,您要运行的可执行文件是shell本身.这当然system()对你有用,但如果你想明确它,你可以使用exec:

execl("/bin/sh", "-c", "cd", (const char *)0);
Run Code Online (Sandbox Code Playgroud)

由于这会替换当前的过程映像,因此应在完成fork()新过程后执行此操作.

但是,这整个过程绝对没有效果.如果要更改当前进程中的目录,请使用chdir().