我正在編寫一個C++應用程序,我需要讀取系統命令的結果。在C++中讀取popen結果
我使用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
?
什麼是'我所有的代碼'?如果你的第一個解決方案是'data.append(buffer);',那麼它的工作是完美的。 – Beta
您可以從崩潰中發佈調用堆棧嗎? – Arkadiy
請提供一個最簡單的**完整**程序來證明你的錯誤。從你的實際程序開始,刪除所有工作的行,並向我們展示剩下的內容。 [Here](http://ideone.com/azOcT)是您的第一個代碼片段的工作實現的一個例子。有關使用此技術的更多信息,請參閱http://sscce.org。 –