温馨提示×

c++ exec输出如何重定向

c++
小樊
81
2024-12-01 15:58:14
栏目: 编程语言

在C++中,你可以使用popen()pclose()函数来重定向exec()函数的输出

#include <iostream>
#include <cstdio>
#include <unistd.h>
#include <sys/wait.h>

int main() {
    // 打开一个文件用于存储输出结果
    FILE *fp = popen("your_command_here", "r");
    if (fp == nullptr) {
        std::cerr << "Failed to run command" << std::endl;
        return 1;
    }

    // 从文件指针中读取输出结果
    char buffer[128];
    while (fgets(buffer, sizeof(buffer), fp) != nullptr) {
        std::cout << buffer;
    }

    // 关闭文件指针并等待命令执行完成
    pclose(fp);
    int status = WEXITSTATUS(waitpid(0, nullptr, 0));
    if (status != 0) {
        std::cerr << "Command exited with status " << status << std::endl;
    }

    return 0;
}

在这个示例中,你需要将"your_command_here"替换为你想要执行的命令。popen()函数会创建一个管道,将命令的输出重定向到文件指针fp。然后你可以使用fgets()函数从文件指针中读取输出结果,并将其打印到标准输出。最后,使用pclose()函数关闭文件指针,并使用waitpid()函数等待命令执行完成。

0