package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"time"
)
func main() {
ch := make(chan os.Signal, 1)
signal.Notify(ch, syscall.SIGKILL, syscall.SIGINT)
go func() {
time.Sleep(20 * time.Second)
GracefullExit(ch)
}()
for {
s := <-ch
switch s {
case syscall.SIGINT:
//SIGINT 信号,在程序关闭时会收到这个信号
fmt.Println("SIGINT","退出程序,执行退出前逻辑")
time.Sleep(5 * time.Second)
fmt.Println("system end")
return
case syscall.SIGKILL:
fmt.Println("SIGKILL")
default:
fmt.Println("default")
}
}
//os.Exit(0) 强制退出命令,类似kill -9
}
func GracefullExit(ch chan os.Signal) {
ch <- syscall.SIGINT
}
go 系统关闭时监听
最新推荐文章于 2023-06-11 17:16:50 发布