Eu tenho um programa que imprime algumas informações para stdout e eu o executo da seguinte forma:
watch -n 0.1 myprogram
Meu problema é que preciso myprogram
sair de forma limpa, chamando destruidores apropriados para liberar mutexes em todo o sistema. Se eu pressionar CTRL+ C, watch
será morto e myprogram
não terá a chance de sair de forma limpa.
Existe uma maneira de sair de watch
forma limpa para que ele aguarde a conclusão do processo filho antes de retornar?
A man
página simplesmente diz:
o relógio funcionará até ser interrompido
Em relação à primeira parte da sua pergunta " Existe uma maneira de sair do relógio de forma limpa? ", sim, você pode interromper um processo enviando um sinal.
Primeiro você precisa descobrir o ID do processo (PID) do seu arquivo
watch
. Você pode fazer isso pelo nome:ou por usuário e como ver o processo criado por um usuário específico no Unix/linux
e então pare
watch
enviando um sinal comoA segunda parte da sua pergunta é mais sobre como lidar com sinais .