De onde é direcionado o STDOUT de um programa deserdado?

10

Como acompanhamento de essa questão , eu gostaria de saber onde o STDOUT e o STDERR de um programa no qual execute disown -h é redirecionado.

    
por Thrawn 29.03.2010 / 11:33

1 resposta

10

disown não altera os programas STDOUT / ERR. Eles ainda irão para onde quer que você os redirecionou (usando > etc.). Se você não os redirecionou, eles continuarão a entrar no terminal do qual você iniciou o programa (até que você feche o terminal, caso em que eles serão descartados).

Para ilustrar, execute isso em um terminal:

bash -c 'while true; do sleep 1; echo hi; done' &

Isto irá imprimir "oi" a cada segundo (e incomodá-lo terrivelmente ;-)). Se você disown o programa após o início, o "oi" s apenas continuará. Você precisa encontrar o PID do shell (usando, por exemplo, ps) e matá-lo para que ele pare.

Editar:

Com base nos comentários, talvez o que você realmente queira fazer é recuperar a saída do programa depois que você disown ed fechou o terminal em que estava sendo executado. Isso é explicado nesta pergunta: Ofact-the-fact remote nohup com tcsh (graças ao quixote quackote ).

    
por 29.03.2010 / 11:37

Tags