Redirección de línea de comandos de Linux con 2 archivos c
-
23-12-2019 - |
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
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.