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() {

    trap "catch $5 $4" SIGTERM
    set -m
     ./child_process_program & # With all arguments needed

}

しかし、私は成功しませんでした。私の問題に対する解決策はありますか?

ベストアンサー1

おすすめ記事