Go の親プロセス終了時に子実行可能ファイルを強制終了
exec パッケージを使用して Go プロセス内から外部実行可能ファイルを実行する場合、親プロセスが終了すると、生成された実行可能ファイルが強制終了され、重大な問題になる可能性があります。
問題:
親 Go プロセスが (ユーザーの割り込みやシステムクラッシュなどにより) 強制終了された場合、子実行可能ファイルは実行を続ける可能性があります。意図しない結果やセキュリティを引き起こす可能性がある
解決策:
この状況に対処するには、主に 2 つのアプローチがあります:
と同じプロセス グループで子実行可能ファイルを開始します。親プロセス。親プロセスが強制終了されると、子実行可能ファイルを含むプロセス グループ全体が終了します。
cmd := exec.Command("child_executable") cmd.SysProcAttr = &syscall.SysProcAttr{ Setpgid: true, }
子プロセス コマンドの SysProcAttr 構造体の Pdeathsig フィールドを設定して、送信されるシグナルを指定します
cmd := exec.Command("child_executable") cmd.SysProcAttr = &syscall.SysProcAttr{ Pdeathsig: syscall.SIGTERM, }
追加の考慮事項:
以上が親プロセスの終了時に子プロセスも確実に終了するようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。