【发布时间】:2011-12-10 02:25:58
【问题描述】:
我正在编写一个 C++ 应用程序,我需要读取系统命令的结果。
我或多或少地使用popen(),如下所示:
const int MAX_BUFFER = 2048;
string cmd="ls -l";
char buffer[MAX_BUFFER];
FILE *stream = popen(cmd.c_str(), "r");
if (stream){
while (!feof(stream))
{
if (fgets(buffer, MAX_BUFFER, stream) != NULL)
{
//here is all my code
}
}
pclose(stream);
}
我一直在尝试以不同的方式重新编写它。我看到了一些非标准的解决方案,例如:
FILE *myfile;
std::fstream fileStream(myfile);
std::string mystring;
while(std::getline(myfile,mystring))
{
// .... Here I do what I need
}
我的编译器不接受这个。
如何在 C++ 中读取 popen?
【问题讨论】:
-
什么是
here all my code?如果是data.append(buffer);,您的第一个解决方案就可以完美运行。 -
能否发布崩溃时的调用堆栈?
-
没有。如果结果为空,它会在 fgets 上崩溃
-
伙计们...我很抱歉...但是你是对的...错误在其他地方...我处于盲目模式,确定错误在那里但它是不!...感到很抱歉一直坚持..
标签: c++ file stream popen fstream