温馨提示×

c++ exec能执行多条命令吗

c++
小樊
82
2024-12-01 16:17:15
栏目: 编程语言

在C++中,exec函数用于在当前进程中执行另一个程序。你可以使用exec族的多个函数来执行多条命令,例如execlexecvexecleexecvp等。这些函数允许你在新程序启动时设置环境变量和传递参数。

以下是一个使用execvp函数执行多条命令的示例:

#include <iostream>
#include <unistd.h>

int main() {
    pid_t pid = fork();

    if (pid == 0) { // 子进程
        char* argv[] = {"echo", "Hello, World!", NULL};
        execvp(argv[0], argv); // 执行 echo 命令
        perror("execvp"); // 如果 execvp 失败,打印错误信息
        return 1;
    } else if (pid > 0) { // 父进程
        int status;
        waitpid(pid, &status, 0); // 等待子进程完成
        std::cout << "子进程已完成,退出状态: " << WEXITSTATUS(status) << std::endl;
    } else { // fork 失败
        perror("fork"); // 打印错误信息
        return 1;
    }

    return 0;
}

在这个示例中,我们首先使用fork()创建一个子进程。然后,在子进程中,我们使用execvp()执行echo "Hello, World!"命令。最后,在父进程中,我们等待子进程完成并打印其退出状态。

请注意,exec函数族会替换当前进程的映像,因此在调用exec之后的代码将不会被执行。如果你需要在同一进程中执行多个命令,可以考虑使用其他方法,例如使用管道(pipe)和fork()创建子进程。

0