42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
/************************************************************
|
|
** @Description: server
|
|
** @Author: george hao
|
|
** @Date: 2018-11-29 11:24
|
|
** @Last Modified by: george hao
|
|
** @Last Modified time: 2018-11-29 11:24
|
|
*************************************************************/
|
|
package server
|
|
|
|
import (
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
)
|
|
|
|
//监听关闭状态
|
|
func ListenSignal() {
|
|
//创建监听退出chan
|
|
c := make(chan os.Signal)
|
|
//监听指定信号 ctrl+c kill
|
|
signal.Notify(c, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGUSR1, syscall.SIGUSR2)
|
|
|
|
go func() {
|
|
for s := range c {
|
|
switch s {
|
|
case syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGUSR1, syscall.SIGUSR2:
|
|
NLog("NOTICE", " Ready to quit close type ", s)
|
|
//TODO 异常警报,汇报状态
|
|
if err := Close(); err != nil {
|
|
NLog("ERROR", err.Error())
|
|
} else {
|
|
NLog("NOTICE", " 执行器安全关闭...")
|
|
}
|
|
os.Exit(0)
|
|
default:
|
|
NLog("NOTICE", " close type ", s)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
}()
|
|
}
|