使用Poco ProcessHandle发送命令并获取结果会导致异常 我试图通过PoCO的ProcessHandle发送一个简单的命令,比如Windows中的“DIR”,并从C++中得到结果。但是它不能返回任何东西,我从下面的代码中得到异常(“系统异常”)。我有类似的ProcessHandle用法,但它通常是关于打开一个.exe文件并向其传递参数。但是现在,我只想发送一个简单的命令。下面的代码有什么问题吗?我目前正在windows中进行此操作

使用Poco ProcessHandle发送命令并获取结果会导致异常 我试图通过PoCO的ProcessHandle发送一个简单的命令,比如Windows中的“DIR”,并从C++中得到结果。但是它不能返回任何东西,我从下面的代码中得到异常(“系统异常”)。我有类似的ProcessHandle用法,但它通常是关于打开一个.exe文件并向其传递参数。但是现在,我只想发送一个简单的命令。下面的代码有什么问题吗?我目前正在windows中进行此操作,c++,command-line,process,poco,poco-libraries,C++,Command Line,Process,Poco,Poco Libraries,我指的是 Poco::Process::Args Args; string命令=“dir”; Poco::管道输出管; Poco::ProcessHandle ph(Poco::Process::launch(命令、参数、0和输出管道、0)); Poco::PipeInputStream istr(输出管); std::字符串s; int c=istr.get(); 而(c!=-1){ s+=(char)c; c=istr.get(); } 我找到了答案。看来我不得不这样做: Poco::Pro

我指的是

Poco::Process::Args Args;
string命令=“dir”;
Poco::管道输出管;
Poco::ProcessHandle ph(Poco::Process::launch(命令、参数、0和输出管道、0));
Poco::PipeInputStream istr(输出管);
std::字符串s;
int c=istr.get();
而(c!=-1){
s+=(char)c;
c=istr.get();
}

我找到了答案。看来我不得不这样做:

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;
Poco::Process::Args Args;
参数推回(“/c”);
参数推回(“dir”);
string命令=“cmd.exe”;
Poco::管道输出管;
Poco::ProcessHandle ph(Poco::Process::launch(命令、参数、0和输出管道、0));
Poco::PipeInputStream istr(输出管);
std::字符串s;
int c=istr.get();
而(c!=-1){
s+=(char)c;
c=istr.get();
}
标准::cout
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;