как получить доступ к выводу stdout? или как перенаправить stdout в буфер?

я помню когда только начинал изучать си, в какой то книге было сказано вроде что-то о перенаправлении ввода вывода. я хочу получить доступ так, чтобы взять из стандартного вывода данные и отобразить наверное в другой вывод, но на консоль. не знаю, возможно ли это?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <string.h>

int fd;

static void *handle_cb ( void *data ) {
        int byte = 0;
        char ans[128];
        char line[512];
        for ( ; byte < 256; byte++ ) {
                read ( fd, ans, 128 );
                char *s = strchr ( ans, '\n' );
                if ( s ) *s = 0;
                snprintf ( line, 512, "%s %x", ans, byte );
                printf ( "%s\n", line );
        }
}

int main ( int argc, char **argv ) {
        char buf[255];
        fd = dup ( STDOUT_FILENO );
        int byte = 0;
        pthread_t t1;
        pthread_create ( &t1, NULL, handle_cb, NULL );
        for ( ; byte < 256; byte++ ) {
                snprintf ( buf, 255, "rasm2 -a x86 -d '%x'", byte );    
                system ( buf );
        }

        pthread_join ( t1, NULL );
}

Ответы (0 шт):