Unix C ++启动子进程并监视其stdio

时间:2012-12-27 05:00:25

标签: c++ multithreading unix process pthreads

在我的C ++程序中,我需要启动一个运行时间很长的新进程并监视其I / O.我无法修改相关程序的源代码。

我正在考虑创建一个新线程并在其中启动进程并将输出连续发送(将以异步方式出现)到主线程。

我目前创建流程的代码如下:

std::string SysExec::exec(char* cmd) {
    FILE* pipe = popen(cmd, "r");
    if (!pipe)
        return "ERROR";
    char buffer[128];
    std::string result = "";
    while (!feof(pipe)) {
        if (fgets(buffer, 128, pipe) != NULL)
            result += buffer;
    }
    pclose(pipe);
    return result;
}

但是,如果从主线程调用,它将使主程序停止(因为while (!feof(pipe)))。我该怎么修改呢?或者有更好的方法吗?

0 个答案:

没有答案