Go捕获系统信号
原理
简单来说,main中可以捕获系统的中断信号,并将其传入到 chan中;
原来的main goroutine因为要捕获系统的 interrupt信号,所以需要将原来的代码放入到另外一个goroutine中。
这样做之后,如果不主动处理interrupt信号,程序默认是无法结束的
示例代码:
func main() {
interrupt := make(chan os.Signal, 5)
signal.Notify(interrupt, os.Interrupt)
go setup.Run()
select {
case <-interrupt:
fmt.Println("程序被用户中断")
}
}
利用这个特性,你可以屏蔽中断信号,或者实行资源释放等操作。
核心函数是signal.Notify这个函数,它会将枚举的参数变量传入至第一个参数的chan中。
Kill我没试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人