Não combine killall
com pgrep
. Eles não usam as mesmas regras de correspondência, então o que pgrep
mostra pode não ser o que killall
mata. Use pkill
, que é exatamente o mesmo que pgrep
, exceto que mata os processos correspondentes em vez de exibir seus PIDs. Esteja ciente de que, se você chamar pgrep
e pkill
, haverá uma condição de corrida: no momento em que pkill
for executado, alguns processos mostrados por pgrep
podem ter sido finalizados e alguns novos processos podem ter sido iniciados. A menos que você se preocupe com os IDs do processo, não faz sentido chamar pgrep
; você pode apenas chamar pkill
diretamente.
pkill
retorna o status 1 se não encontrar nenhum processo para matar. Adicione -
no início do comando, para informar ao make para ignorar esse erro ou altere o comando para pkill myserver || true
, que faz exatamente a mesma coisa que pkill myserver
, mas sempre retorna um status de sucesso.
test: client server
pkill myserver || true
/build/bin/myserver --background
/build/bin/myclient --server 127.0.0.1