Como interromper o comando watch?

1

Eu tenho um programa que imprime algumas informações para stdout e eu corro assim:

watch -n 0.1 myprogram

Meu problema é que eu preciso de myprogram para sair de forma limpa, chamando os destruidores apropriados para liberarem os mutexes de todo o sistema. Se eu pressionar CTRL + C , então watch é eliminado e myprogram não tem a chance de sair corretamente.

Existe uma maneira de sair do watch de forma limpa para que o processo filho termine antes de retornar?

A página man diz simplesmente:

watch will run until interrupted

    
por Stewart 17.05.2018 / 09:03

1 resposta

0

Em relação à primeira parte da sua pergunta " Existe uma maneira de sair para assistir de forma limpa? ", sim, você pode interromper um processo enviando um sinal.

Primeiro, você precisa descobrir o ID do processo (PID) da sua execução watch . Você pode fazer isso pelo nome:

pidof watch

ou por usuário e Como para ver o processo criado por um usuário específico no Unix / linux

ps -u ${USER} | grep -i watch | cut -d " " -f 1

e, em seguida, pare watch enviando um sinal como

kill -IT ${PID}
kill -INT $(pidof watch)

A segunda parte da sua pergunta é mais sobre o processamento de sinais .

    
por 18.05.2018 / 10:08

Tags