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