Reindirizzamento della riga di comando Linux con 2 file C
-
23-12-2019 - |
Domanda
Sono solo nuovo per le funzioni I / O tubazioni all'interno di Linux. 2 file c sono stati effettuati, i primi dati inviano:
#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;
}
.
I secondi file ricevono il numero stampato e visualizzalo:
#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;
}
.
Alla fine provo a reindirizzare i dati dal primo file al secondo con:
./send_test.out | ./rcv_test.out
.
Il terminale stampa ripetutamente: "Numero ricevuto: 0", cosa sto facendo male? Inoltre, come posso avere finestre terminali per entrambi i programmi in esecuzione contemporaneamente mentre indirizza l'uscita dal mittente al ricevitore?
Grazie in anticipo
Soluzione
Non stai "Invio" Il numero in un formato Il ricevitore può capire.
Prova a rimuovere tutto il testo tranne il %d
dalla stringa di formattazione del mittente.
Inoltre, è necessario verificare il valore di ritorno del scanf()
prima di fare affidamento su di esso.