gpt4 book ai didi

go - 如果您从应用程序中按 ctrl-c,是否会运行延迟的 Restore()?

转载 作者:行者123 更新时间:2023-12-01 20:23:49 25 4
gpt4 key购买 nike

在 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 */

}

如果我在 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
}()

关于go - 如果您从应用程序中按 ctrl-c,是否会运行延迟的 Restore()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63257505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com