使用Defer 函數捕捉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)
接下來,啟動一個等待傳入訊號的goroutine:
go func(){ for sig := range c { // Handle the sig interruption } }()
在goroutine內部,您可以在以下情況下執行任何必要的清理操作:收到SIGINT 訊號。其執行的操作。
以上是Go 的 defer 函數可以處理 SIGINT 以乾淨地終止程式嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!