package signalMgr import ( "fmt" "os" "os/signal" "syscall" "Framework/exitMgr" "Framework/goroutineMgr" "Framework/reloadMgr" "goutil/debugUtil" "goutil/logUtil" ) // Start ...启动信号管理器 func Start() { go func() { goroutineName := "signalMgr.Start" goroutineMgr.Monitor(goroutineName) defer goroutineMgr.ReleaseMonitor(goroutineName) sigs := make(chan os.Signal) signal.Notify(sigs, syscall.SIGTERM, syscall.SIGINT, syscall.SIGHUP) for { // 准备接收信息 sig := <-sigs // 输出信号 debugUtil.Println("sig:", sig) if sig == syscall.SIGHUP { logUtil.InfoLog("收到重启的信号,准备重新加载配置") // 重新加载 errList := reloadMgr.Reload() for _, err := range errList { logUtil.ErrorLog(fmt.Sprintf("重启失败,错误信息为:%s", err)) } logUtil.InfoLog("收到重启的信号,重新加载配置完成") } else { logUtil.InfoLog("收到退出程序的信号,开始退出……") // 调用退出的方法 exitMgr.Exit() logUtil.InfoLog("收到退出程序的信号,退出完成……") // 一旦收到信号,则表明管理员希望退出程序,则先保存信息,然后退出 os.Exit(0) } } }() }