나는 다음 스크립트를 작성했습니다(쓸데없는 것들을 제거했습니다):
#!/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 변경을 시도했지만 실패했습니다.
main() {
trap "catch $5 $4" SIGTERM
set -m
./child_process_program & # With all arguments needed
}
그러나 나는 성공하지 못했습니다. 내 문제에 대한 해결책이 있나요?