Redirecionando a saída da leitura de programa do stdin

0

Quando eu quiser redirecionar uma saída do programa a.out , usarei

./a.out > output.txt

Isso não funciona quando o programa lê algo de stdin . Como você redirecionaria a saída nesse caso?

Eu posso fazer isso apenas com

./a.out < inputs.txt > output.txt

Posso fazer o mesmo, mas lendo entradas de stdin ?

EDIT: Eu percebi que funciona, mas não consigo ver prompts porque tudo vai para o arquivo output.txt . Portanto, o único problema é ver prompts em stdin e preservar o redirecionamento ao mesmo tempo.

    
por xralf 27.05.2012 / 13:10

1 resposta

2

Uma opção seria escrever seus prompts para stderr em vez de stdout . Eles estarão visíveis no terminal, mas não no output.txt .

Outra opção é não usar o redirecionamento para sua saída, mas ter um nome de arquivo de saída como um parâmetro e abrir esse arquivo por conta própria. Você pode então usar stdout para seus prompts. (Isso é mais flexível. Você pode decidir o que vai apenas para o arquivo, o que vai apenas para a tela e, potencialmente, o que vai para ambos.)

Se você não puder alterar o código, a única opção é usar tee ou algum outro desses utilitários. Buffering pode ser um problema; stdbuf pode ajudar com isso.

    
por 27.05.2012 / 14:10