Isso se baseia em esta resposta que tem instruções para enviar a saída para /dev/null
.
Para enviar a saída de um programa em execução para /tmp/file.log
, por exemplo, faça o seguinte:
Em um segundo terminal, use ps
para obter o ID do processo do seu programa.
Digite touch /tmp/file.log
para criar um arquivo vazio para sua saída.
Digite gdb -p [PID]
usando o ID do processo de ps
.
No prompt (gdb)
, digite estes comandos:
p dup2(open("/tmp/file.log",1),1)
p dup2(open("/tmp/file.log",1),2)
detach
quit
Em resposta aos comandos dup2
, você verá " $1 = 1
" e " $2 = 2
". Você deve ver a saída cessar no outro terminal e você deve ser capaz de cat
ou tail -f
do arquivo de log (ou usar ls -l
repetidamente e ver o aumento de tamanho).
Agora você pode suspender seu processo usando Ctrl - Z e retomá-lo em segundo plano usando bg 1
(ou qualquer que seja o número do trabalho).