SIGTERM에 의해 어린이가 차단되지 않도록 방지

SIGTERM에 의해 어린이가 차단되지 않도록 방지

나는 다음 스크립트를 작성했습니다(쓸데없는 것들을 제거했습니다):

#!/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

}

그러나 나는 성공하지 못했습니다. 내 문제에 대한 해결책이 있나요?

관련 정보