Como passar a saída de um programa para o stdin de outro programa?

2

Eu tenho um pequeno programa em C recebendo entrada com scanf ()

int main(){
    char* buf[10];
    scanf("%s", buf);
    return 0;
}

Estou tentando passar scanf a saída de outro programa (alguma string gerada por python ou até mesmo um echo aaa no início).

Eu pensei em canalizar a saída diretamente para stdin (de outro terminal) fazendo isso:

pidof a.out xxx echo aaa > /proc/xxx/fd/0

Mas só imprime aaa no terminal do meu programa C, ainda esperando por uma entrada.

Obrigado antecipadamente

    
por user162119 26.10.2017 / 10:45

1 resposta

0

Você deve poder apenas

echo 'string' | ./a.out

O shell fará com que a tubulação seja feita corretamente, e seu programa simplesmente lerá a partir de sua entrada padrão.

O que você está tentando é um redirecionamento altamente não portátil , não um canal.

Além disso, lembre-se de verificar o código de retorno de scanf() e certifique-se de que seu buffer de entrada seja grande o suficiente para manter a entrada. O ideal é usar uma string de formato que restrinja o número de caracteres lidos, por exemplo, %9s ou algo semelhante no seu exemplo.

    
por 26.10.2017 / 10:50

Tags