1,go监听程序关闭
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"time"
)
func main() {
// 创建一个通道来接收信号
sigCh := make(chan os.Signal, 1)
// 监听指定的信号
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
// 启动一个 goroutine 来处理接收到的信号
go func() {
// 等待信号
sig := <-sigCh
fmt.Printf("接收到信号:%v\n", sig)
// 在这里执行程序关闭前的清理操作
// 在这里编写你的程序逻辑
fmt.Printf("关闭程序")
// 退出程序
os.Exit(0)
}()
for {
fmt.Println("执行中")
time.Sleep(3 * time.Second) // 阻塞程序 3 秒
}
// 阻塞主 goroutine,保持程序运行
//select {}
}
2,win下执行 go run xxx.go
Ctrl+C退出关闭程序