legongju.com
我们一直在努力
2024-12-23 20:37 | 星期一

c++ exec怎样处理执行结果

在C++中,你可以使用exec函数族来执行外部命令并处理其输出结果

#include 
#include 
#include 
#include 
#include 

int main() {
    std::vector args = {"ls", "-l"}; // 示例命令:列出当前目录下的所有文件
    std::vector argv(args.size() + 1);
    for (size_t i = 0; i < args.size(); ++i) {
        argv[i] = const_cast(args[i].c_str());
    }
    argv[args.size()] = nullptr; // 添加空指针作为命令的结束标志

    pid_t pid = fork(); // 创建子进程
    if (pid == 0) { // 子进程
        execv("/bin/ls", argv.data()); // 执行外部命令
        perror("execv"); // 如果执行失败,打印错误信息
        exit(EXIT_FAILURE); // 退出子进程
    } else if (pid > 0) { // 父进程
        int status;
        waitpid(pid, &status, 0); // 等待子进程结束
        if (WIFEXITED(status)) { // 检查子进程是否正常结束
            std::cout << "子进程返回码: " << WEXITSTATUS(status) << std::endl;
        } else {
            std::cerr << "子进程异常结束" << std::endl;
        }
    } else { // fork失败
        perror("fork");
        return EXIT_FAILURE;
    }

    return EXIT_SUCCESS;
}

在这个示例中,我们使用fork()创建了一个子进程,然后在子进程中使用execv()执行了ls -l命令。父进程会等待子进程结束,并检查其返回状态。如果子进程正常结束,我们可以从WEXITSTATUS(status)获取到子进程的返回码。

注意:这个示例仅适用于Unix-like系统(如Linux和macOS)。如果你正在使用Windows系统,你需要使用CreateProcess()函数来创建子进程并执行外部命令。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/49577.html

相关推荐

  • c++ stod性能是否最优

    c++ stod性能是否最优

    std::stod 是 C++ 标准库中的一个函数,用于将字符串转换为双精度浮点数。关于其性能是否最优,这取决于具体的使用场景和需求。以下是关于 std::stod 性能的相关...

  • c++ stod和std::to_string咋样

    c++ stod和std::to_string咋样

    std::stod 和 std::to_string 是 C++ 标准库中的两种函数,它们用于将不同类型的数据转换为字符串。 std::stod:这个函数用于将一个字符串转换为浮点数(double)...

  • c++ stod对编码有要求吗

    c++ stod对编码有要求吗

    std::stod 是 C++ 标准库中的一个函数,用于将字符串转换为 double 类型的浮点数。关于编码,std::stod 函数本身并不直接处理编码问题,因为它主要处理的是字符串...

  • c++ stod可处理负数吗

    c++ stod可处理负数吗

    std::stod 是 C++ 标准库中的一个函数,用于将字符串转换为 double 类型的浮点数。它可以处理负数。例如:
    #include #include #include // for std::stod i...

  • c++ exec如何执行外部命令

    c++ exec如何执行外部命令

    在C++中,你可以使用exec函数族来执行外部命令
    #include #include int main() { // 要执行的外部命令,例如:ls const char* command = "ls"; // 使用execv...

  • linux下java路径常见错误是啥

    linux下java路径常见错误是啥

    在Linux下,Java路径的常见错误有以下几点: 环境变量设置错误:Java的路径没有正确设置到环境变量中,导致在命令行中无法识别和使用Java命令。解决方法是在.bas...

  • linux java路径怎样设置有效

    linux java路径怎样设置有效

    在 Linux 系统中,要设置 Java 路径,你需要执行以下几个步骤: 首先,确保你已经安装了 Java Development Kit (JDK)。如果没有安装,你可以通过以下命令安装:<...

  • 在linux中java路径如何配置

    在linux中java路径如何配置

    在 Linux 中配置 Java 路径,通常需要设置两个环境变量:JAVA_HOME 和 PATH 首先,找到你的 Java 安装目录。例如,如果你的 Java 安装在 /usr/lib/jvm/java-11-o...