Eu escrevi este script (removi algumas coisas inúteis):
#!/bin/bash
readonly ARGS="$@"
catch() {
echo "Sigterm caught"
# Perform some cleanup instructions
# that suppose the child process is still alive
trap - SIGTERM # remove the trap
kill -s SIGINT -- -$$ # Sends SIGINT to child/sub processes
exit 0
}
main() {
trap "catch $5 $4" SIGTERM
./child_process_program # With all arguments needed
}
main $ARGS
Eu inicio este script com o script da seguinte forma: timeout "10s" ./my_script <arguments>
.
O problema é que o sigterm atinge também o child_process_program e, portanto, as instruções que supõem que o processo filho ainda está ativo não podem ser bem-sucedidas.
Já vejo uma questão muito com resposta e tentou (sem sucesso) para mudar principal como segue:
main() {
trap "catch $5 $4" SIGTERM
set -m
./child_process_program & # With all arguments needed
}
Mas eu não consegui. Existe uma solução para o meu problema?