Pergunta

Eu só estou de novo para a tubulação de funções de e/S dentro do Linux.2 c-arquivos foram feitas, a primeira envia dados:

    #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;
}

A segunda arquivos recebe o número impresso e apresenta-o:

    #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 eu tentar redirecionar os dados a partir do primeiro ficheiro da primeira para a segunda com:

./send_test.out | ./rcv_test.out

O Terminal imprime várias vezes:"Recebeu o número:0", o que estou fazendo de errado?Além disso, como posso ter de terminal do windows para ambos os programas em execução simultaneamente enquanto direciona a saída do remetente para o receptor?

Obrigado antecipadamente

Foi útil?

Solução

Você não está "enviando", o número em um formato que o receptor possa entender.

Tente remover todo o texto, exceto o %d do remetente da cadeia de caracteres de formatação.

Além disso, você deve verificar o valor de retorno de scanf() antes de confiar nele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top