执行命令并得到输出:popen 和 pclose undefined

Kur*_*den 4 c++ process visual-studio

本答案中所述,我尝试在 Visual Studio 项目中执行 Windows 命令并在 C++ 中获取输出。

std::string executeCommand (const char* cmd) {
    char buffer[128];
    std::string result = "";
    std::shared_ptr<FILE> pipe(popen(cmd, "r"), pclose);
    if (!pipe) throw std::runtime_error("popen() failed!");

    while (!feof(pipe.get())) {
        if (fgets(buffer, 128, pipe.get()) != NULL)
            result += buffer;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

问题是,这不是编译。给出了以下错误:

Error: identifier "popen" is undefined.
Error: identifier "pclose" is undefined.
Run Code Online (Sandbox Code Playgroud)

Kur*_*den 6

由于微软编译器时,需要在年初下划线popenpclose。代替:

std::shared_ptr<FILE> pipe(popen(cmd, "r"), pclose);
Run Code Online (Sandbox Code Playgroud)

和:

std::shared_ptr<FILE> pipe(_popen(cmd, "r"), _pclose);
Run Code Online (Sandbox Code Playgroud)