在 Golang 中,是否有可能像处理 panic/defer 那样捕获 sigterm 并继续执行代码?
示例:
func main() {
fmt.Println("app started")
setupGracefulShutdown()
for {
}
close()
}
func close() {
fmt.Println("infinite loop stopped and got here")
}
func setupGracefulShutdown() {
sigChan := make(chan os.Signal)
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM)
go func() {
fmt.Println(" got interrupt signal: ", <-sigChan)
}()
}
// "app started"
// CTRL + C
// ^C "got interrupt signal: interrupt"
// app don't stop
我想要的是打印出“无限循环停止并到达此处”,然后结束应用程序。
// "app started"
// CTRL + C
// ^C "got interrupt signal: interrupt"
// "infinite loop stopped and got here"
sigChan
,并在接收到值后“中断”。这有什么问题吗? - icza