Чтение всплывающих результатов в C ++

Я пишу приложение на 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
}

Мой компилятор не принимает это.

Как я могу читать из popen на C ++?

11
задан Flexo 19 June 2012 в 10:01
поделиться