Código correcto - Tubería sin bloqueo con popen

Hay toneladas de preguntas acerca de las tuberías que no bloquean, pero NO hay ejemplos de código que puedan copiarse y pegarse (con poca corrección) y usarse.

Tengo la idea y las fuentes de este hilo:¿Tubo sin bloqueo utilizando popen?

¿Pero cómo usarlo? Awhile ¿ciclo? Por favor, revise mis cambios. Es realmente necesario utilizarerrno == EAGAIN & cabecera adicional#include <cerrno> ? Sugiera su propia versión mejor si es necesario:

    FILE *pipe;
    char buff[512];
    if ( !(pipe = popen( command.c_str(), "r")) ) return false;

    int d = fileno(pipe);   
    while ( true )
    {
        ssize_t r = read(d, buff, sizeof(buff));
        if (r == -1 && errno == EAGAIN) // really need errno? 
            continue;
        else if (r > 0)
            ptr_output->append(buff);       
        else
            break;
    }

    pclose(pipe);

Respuestas a la pregunta(2)

Su respuesta a la pregunta