「遅延」アプローチを使用した正常なシャットダウンのための SIGINT 信号のキャプチャ
アプリケーションのクリーンなシャットダウンを維持するには、ユーザーの中断を処理することが重要です。一般的なシナリオの 1 つは、終了する前にクリーンアップ タスクを実行するために SIGINT シグナル (Ctrl C) をキャプチャすることです。
SIGINT をキャプチャするには、次の os/signal パッケージを利用できます。ゴラン。その方法は次のとおりです。
import ( "fmt" "os" "os/signal" "time" ) func cleanup() { fmt.Println("Performing cleanup operations...") } func main() { c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) defer cleanup() // Schedule cleanup function to run before main exits for { // Do stuff time.Sleep(time.Second) } }
Ctrl C を押すと、SIGINT シグナルがプログラムに送信されます。 main 関数は、チャネル c を通じてこの信号をキャプチャします。 defer キーワードのおかげで、クリーンアップ関数はプログラムが終了する前に実行されるようにスケジュールされています。これにより、ループ内の未処理の操作の後にクリーンアップ タスクが確実に実行されます。
アプリケーションのニーズに合わせてクリーンアップ関数の動作をカスタマイズできます。たとえば、これを使用して、未保存のデータを保存したり、接続を閉じたり、その他の必要なタスクを実行したりできます。
以上が「defer」キーワードと SIGINT シグナルを使用して Go で正常なシャットダウンを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。