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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top