Digamos que eu tenha começado program
e continue gravando alguma saída no stdout. Existe alguma maneira de adicionar um pipe para que eu possa, por exemplo, contar o número de linhas que ele produziu wc -l
?
Digamos que eu tenha começado program
e continue gravando alguma saída no stdout. Existe alguma maneira de adicionar um pipe para que eu possa, por exemplo, contar o número de linhas que ele produziu wc -l
?
Você pode fazer isso no Linux. Digamos que haja um script
s
:Executá-lo:
E assim vai... Agora você precisa
gdb
se atentar ao processo.Agora você está dentro
gdb
. Aqui faça isso:Isso fechou o descritor de arquivo STDOUT. Agora abra um novo:
Em outro terminal você já pode definir o processo de leitura:
Nada está chegando ainda, pois você precisa se desconectar
gdb
no outro terminal. Ou Ctl+ D, ou:Confirme com
y
e Enter. E agora você deve ver (ondetail
está rodando) algo assim:Se você preferir usar um arquivo ou pipe já existente, faça isso em
gdb
:Isso ilustra o redirecionamento de STDOUT. É semelhante ao STDERR, só que tem o número 2.
Eu usei essas duas respostas:
Você pode usar
tee
quando iniciar o programa. Se você estiver usando o bash, você pode fazer:Isso redirecionará o stdout
program
para uma substituição de processo em execuçãotee
. Isso basicamente grava uma cópia do stdout deprogram
tolog.txt
.tee
continuará a enviar o stdout para onde estava indo antes, provavelmente o terminal dependendo de comoprogram
funciona.