在 Go 中,你有类似的东西:
func main() {
defer func() {
if r := recover(); r != nil {
/*run some clean up code here...*/
fmt.Println("Recovered")
}
}()
/*Some code right here like a web server that runs until panic or ctrl-c'd out */
}
Run Code Online (Sandbox Code Playgroud)
如果我在 Linux 中按 ctrl-C,它会运行延迟吗?还是立即退出?如果它立即退出,有办法解决吗?无论如何,在应用程序退出时运行代码的方法是什么?
Ctrl-C 或其他信号将终止程序而不调用延迟函数。您可以使用信号处理程序捕获 ctrl-c。阅读 os/signal 包的文档,它具有操作系统特定的行为。像下面这样的东西会捕获 ctrl-c:
c := make(chan os.Signal, 1)
signal.Notify(c,os.Interrupt)
go func() {
s := <-c
// signal caught, cleanup
}()
Run Code Online (Sandbox Code Playgroud)