使用Poco ProcessHandle发送命令获取结果异常

Using Poco ProcessHandle to send commands and get the result is getting exception

我正在尝试通过 Poco 的 ProcessHandle 发送一个简单的命令,例如 Windows 中的“dir”,并在 C++ 中从中获取结果。但它不能 return 我任何东西,我从下面的代码中得到异常(“系统异常”)。我对 ProcessHandle 有类似的用法,但它通常是关于打开一个 .exe 文件并将参数传递给它。但是现在,我只想发送一个简单的命令。下面的代码有什么问题吗?我目前正在 windows

我指的是 here

处的代码
Poco::Process::Args args;
string command = "dir";

Poco::Pipe outPipe;
Poco::ProcessHandle ph(Poco::Process::launch(command, args, 0, &outPipe, 0));

Poco::PipeInputStream istr(outPipe);

std::string s;
int c = istr.get();
while (c != -1) {
    s += (char)c;
    c = istr.get();
}
std::cout << "string is " << s << std::endl;

我找到了答案。看来我只需要做这样的事情:

Poco::Process::Args args;
args.push_back("/c");
args.push_back("dir");
string command = "cmd.exe";

Poco::Pipe outPipe;
Poco::ProcessHandle ph(Poco::Process::launch(command, args, 0, &outPipe, 0));

Poco::PipeInputStream istr(outPipe);

std::string s;
int c = istr.get();
while (c != -1) {
    s += (char)c;
    c = istr.get();
}
std::cout << "string is " << s << std::endl;