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