Example #1
0
// 服务停止时调用的方法
// s:服务对象
func (handler *Handler) Stop(s service.Service) error {
	logUtil.Log("服务停止运行,执行收尾工作", logUtil.Info, true)

	// 执行一些收尾的工作
	rpc.StopServer()

	// 交给其他通过Goroutine来执行的程序
	time.Sleep(5 * time.Second)

	return nil
}
Example #2
0
// 处理系统信号
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)
	}
}