Golang でシグナルをキャッチする
一部のシナリオでは、Golang で生成されたシグナルを監視およびキャッチするプロセス ラッパーを実装する必要がある場合があります。起動されたプロセス。プロセス ラッパーはプロセスを起動し、SIGKILL や SIGTERM などのシグナルを処理する必要があります。
プロセスの起動
プロセスを起動するには、syscall.Exec 関数を使用できます。 。この関数を使用すると、コマンドを実行し、その入力ストリームと出力ストリームをリダイレクトできます。以下に例を示します。
func launchCmd(path string, args []string) { err := syscall.Exec(path, args, os.Environ()) if err != nil { panic(err) } }
シグナルのキャッチ
Go では、シグナル パッケージを使用して、プロセスに送信されたシグナルをキャッチできます。 signal.Notify 関数を使用すると、指定したシグナルの通知を受信するチャネルを登録できます。例:
sigc := make(chan os.Signal, 1) signal.Notify(sigc, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) go func() { s := <-sigc // ... do something ... }()
このコードでは、sigc は指定された信号タイプから信号を受信するチャネルです。 select ステートメントを使用すると、このチャネル上の信号をリッスンし、適切なアクションを実行できます。
追加メモ
以上がGo で起動されたプロセスからのシグナルをキャッチして処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。