
私は次のスクリプトを書きました(無駄なものを削除しました):
#!/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
以下を使用してこのスクリプトを起動しますtimeout "10s" ./my_script <arguments>
。
問題は、sigterm が child_process_program にも到達するため、子プロセスがまだ存在すると仮定するコマンドは成功できないことです。
私はすでにそれを見ました答えが非常に似ている質問次のようにメインの変更を試みましたが失敗しました。
main() {
trap "catch $5 $4" SIGTERM
set -m
./child_process_program & # With all arguments needed
}
しかし、私は成功しませんでした。私の問題に対する解決策はありますか?