Pregunta

Soy nuevo en las funciones de E/S de tuberías dentro de Linux.Se realizaron 2 archivos c, el primero envía datos:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <unistd.h>

    int main(int argc, char* argv[])
    {
         int i = 0;

         for(;;)
         {
             printf("\nSent number: %d",i);
             i++;
             sleep(1);
             fflush(stdout);
         }

    return 0;
}

El segundo archivo recibe el número impreso y lo muestra:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <unistd.h>

int main(int argc, char* argv[])
{    
    int x;

    for(;;)
    {
        scanf("%d",&x);
        printf("Received number: %d\n",x);
        sleep(1);
        fflush(stdout);
    }

    return 0;
}

Finalmente intento redirigir los datos del primer archivo al segundo con:

./send_test.out | ./rcv_test.out

La Terminal imprime repetidamente:"Número recibido:0", ¿qué estoy haciendo mal?Además, ¿cómo puedo tener ventanas de terminal para ambos programas que se ejecutan simultáneamente mientras dirijo la salida del remitente al receptor?

gracias de antemano

¿Fue útil?

Solución

No está "enviando" el número en un formato que el receptor pueda entender.

Intente eliminar todo el texto excepto el %d de la cadena de formato del remitente.

Además, debe verificar el valor de retorno de scanf() antes de confiar en él.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top