Go でのプロセス終了後の実行可能ファイルの強制終了
Golang スレッドで個別の実行可能ファイルを実行する場合、これらの実行可能ファイルが確実に終了するようにすることが重要です。メインプロセスが強制終了されます。これは、ユーザーのアクションまたはその他の外部要因によって発生する可能性があります。
解決策:
これを実現するには、主に 2 つのアプローチがあります:
1 。プロセスグループの終了:
メインプロセスと同じプロセスグループに子プロセスを作成します。メインプロセスが強制終了されると、子実行可能ファイルを含むプロセスグループ全体が終了します。
2. Pdeathsig システム コール:
syscall.SetProcAttr 関数を使用して、子プロセスの Pdeathsig 属性を設定します。この属性は、親プロセスの終了時に子プロセスに送信されるシグナルを決定します。 syscall.SIGTERM のような値に設定すると、子プロセスが確実に正常に終了されます。
例:
cmd := exec.Command("./long-process") cmd.SysProcAttr = &syscall.SysProcAttr{ Pdeathsig: syscall.SIGTERM, }
追加の考慮事項:
これらのアプローチを実装すると、Golang プロセスによって呼び出された実行可能ファイルがプロセス自体の終了時に確実に強制終了され、プロセスをクリーンに終了し、孤立したプロセスを防止します。
以上がGo 親プロセスが強制終了されたときに子実行可能ファイルが確実に終了するようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。