Estoy escribiendo una aplicación C++ y necesito leer el resultado de un comando del sistema.Lectura de resultados popen en C++
estoy usando popen()
más o menos como se muestra aquí:
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);
}
que he estado tratando de volver a escribir esto de una manera diferente. Vi algunas soluciones no estándar como:
FILE *myfile;
std::fstream fileStream(myfile);
std::string mystring;
while(std::getline(myfile,mystring))
{
// .... Here I do what I need
}
Mi compilador no acepta esto sin embargo.
¿Cómo puedo leer desde popen
en C++?
¿Qué es 'here all my code'? Su primera solución funciona perfectamente si es 'data.append (buffer);'. – Beta
¿Podría publicar la pila de llamadas de su caída? – Arkadiy
Proporcione un programa ** completo ** mínimo que demuestre su error. Comience con su programa actual, elimine todas las líneas que funcionan y muéstrenos lo que queda. [Aquí] (http://ideone.com/azOcT) es un ejemplo de una implementación en funcionamiento de su primer fragmento de código. Consulte http://sscce.org para obtener más información sobre el uso de esta técnica. –