防止儿童被 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

}

但我没有成功。我的问题有解决办法吗?

相关内容