在C++中,可以使用exec()
函數族來替換子進程的映像。下面是一個簡單的示例代碼:
#include <iostream>
#include <unistd.h>
int main() {
char* cmd = "/bin/ls";
char* arg1 = "-l";
char* arg2 = "/";
// 創建子進程
pid_t pid = fork();
if (pid == 0) {
// 在子進程中執行新的程序
execvp(cmd, {cmd, arg1, arg2, NULL});
perror("execvp");
return 1;
} else {
// 等待子進程結束
waitpid(pid, NULL, 0);
}
return 0;
}
在上面的示例中,我們首先創建了一個子進程,然后在子進程中使用execvp()
函數來執行新的程序/bin/ls
,并傳入參數-l
和/
。這樣就會替換子進程的映像為/bin/ls
程序,并且輸出/
目錄下的文件列表。最后,父進程等待子進程結束。
需要注意的是,在使用exec()
函數族時,子進程的映像會被新的程序替換掉,因此原始程序的代碼將不再執行。