使用「延遲」方法擷取 SIGINT 訊號以實現正常關閉
處理使用者中斷對於保持應用程式乾淨關閉至關重要。常見的情況是捕捉 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中文網其他相關文章!