// 服务停止时调用的方法 // s:服务对象 func (handler *Handler) Stop(s service.Service) error { logUtil.Log("服务停止运行,执行收尾工作", logUtil.Info, true) // 执行一些收尾的工作 rpc.StopServer() // 交给其他通过Goroutine来执行的程序 time.Sleep(5 * time.Second) return nil }
// 处理系统信号 func signalProc() { sigs := make(chan os.Signal) signal.Notify(sigs, syscall.SIGTERM, syscall.SIGINT) for { // 准备接收信息 sig := <-sigs // 一旦收到信号,则表明管理员希望退出程序,则先保存信息,然后退出 msg := fmt.Sprintf("收到管理员的退出信号:%s,5秒后将关闭", sig) logUtil.Log(msg, logUtil.Info, true) fmt.Println(msg) // 执行一些收尾的工作 rpc.StopServer() // 交给其他通过Goroutine来执行的程序 time.Sleep(5 * time.Second) // 退出 os.Exit(0) } }