遅延関数による SIGINT のトラップ
質問: Ctrl C (SIGINT) シグナルとプログラムの前にクリーンアップ関数を実行する終了?
答え:
はい、Go の os/signal パッケージを使用して、SIGINT シグナルをキャプチャし、「遅延」方式でクリーンアップ関数を実行できます。
signal.Notify 関数を使用すると、os.Interrupt (は、Ctrl C によって生成された SIGINT シグナルを表します):
c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt)
次に、受信シグナルを待機するゴルーチンを開始します:
go func(){ for sig := range c { // Handle the sig interruption } }()
ゴルーチン内で、必要なクリーンアップ アクションを実行できます。 SIGINT シグナルを受信したとき。
プログラムを終了して情報を表示する方法は、次によって決まります。あなたの特定の実装。クリーンアップ機能の動作方法と実行するアクションを完全に制御できます。
以上がGo の「defer」関数はクリーンなプログラム終了のために SIGINT を処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。