Linux linha de comando de redirecionamento com 2 c-arquivos
-
23-12-2019 - |
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
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.