Open llhuii opened 3 years ago
https://code.k8s.io/staging/src/k8s.io/apiserver/pkg/server/signal.go 当连续两次收到SIGTERM/SIGINT时, 进程退出.
比如调试时, 连续按两次Ctrl-C即可让程序退出.
为什么要连续两次? 为了进程优雅的退出 第一次时, 通知进程准备停止了, 请做好资源清理
对应到代码:
当进程第一次收到信号时, cancel context, 第二次收到信号时, os.Exit(1):
ctx, cancel := context.WithCancel(context.Background()) signal.Notify(shtudownHandler, shutdownSignals...) go func() { <-shutdownHandler cancel() <-shutdownHandler os.Exit(1) }
https://code.k8s.io/staging/src/k8s.io/apiserver/pkg/server/signal.go 当连续两次收到SIGTERM/SIGINT时, 进程退出.
比如调试时, 连续按两次Ctrl-C即可让程序退出.
为什么要连续两次? 为了进程优雅的退出 第一次时, 通知进程准备停止了, 请做好资源清理
对应到代码:
当进程第一次收到信号时, cancel context, 第二次收到信号时, os.Exit(1):