请教各位大佬,go 的信号,为什么像是拦截啊
一但监控到指定信号,处理完之后,后续的代码还是会执行
比如这里我想监听到 ctrl+c 之后释放资源,程序结束,但是最后还是会输出
ps:不要说 os.Exit() 因为这只是一个模块,可以启动多个,如果直接退出,那么其余的资源可能来不及释放
接收到 ctrl+c 之后仍然执行了 end 输出
有疑问加站长微信联系(非本文作者)

请教各位大佬,go 的信号,为什么像是拦截啊
一但监控到指定信号,处理完之后,后续的代码还是会执行
比如这里我想监听到 ctrl+c 之后释放资源,程序结束,但是最后还是会输出
ps:不要说 os.Exit() 因为这只是一个模块,可以启动多个,如果直接退出,那么其余的资源可能来不及释放
接收到 ctrl+c 之后仍然执行了 end 输出
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
signalChannel不能时0-cap,会丢失信号。
好的老哥,我加了
后续是我做了一个总的记录,只有一个信号接收,在结束时释放所有的资源
但是我就是想问一下,有没有一种写法,接收到这个信号,但时不会干扰这个信号中断程序执行
释放资源、程序退出就是你自己要实现的sighandler,别人怎么知道你要释放什么资源、怎么释放? 这里其实可以玩出花的,譬如有些大佬就喜欢double SIGINT来实现graceful shutdown。
谢谢老哥回答,我只是在 ctrl+c 时触发资源回收
信号只是系统给你的一个通知,具体接收到信号后要干什么要你自己实现的,不是说接收到了ctrl+c信号程序就自己退出了,操作系统是不会帮你退出程序的,要么你自己中断退出,要么程序执行结束了自己退出。