代码笔记 | 📅 2022-04-01 | golang
一般情况下,我们可以通过 Ctrl+C 关闭程序。一些情况下,我们需要对程序的关闭进行一些处理,此时我们可以这么做。
func main() {
// 一顿初始化操作
quit := make(chan os.Signal, 1) // 创建一个 os.Signal 类型的 Channel
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) // 监听关闭信号,Ctrl+C 或者其他情况关闭进程都会触发
<-quit // 收到关闭信号前挂起,收到信号后执行后面的代码
// 一顿关闭和清理操作
}
这样通过监听进程的关闭信号,来知晓程序何时关闭,进而对关闭前的程序进行处理。一般也就是:
那么,为啥不顺便监听 kill 信号(syscall.SIGKILL)呢?进程被kill的时候,进程是不会收到信号的……监听了也没用……