初始化项目
This commit is contained in:
10
trunk/framework/signalMgr/doc.go
Normal file
10
trunk/framework/signalMgr/doc.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package signalMgr
|
||||
|
||||
// 系统信号管理包
|
||||
// 提供对操作系统信号的管理,支持三种信号:syscall.SIGTERM, syscall.SIGINT, syscall.SIGHUP
|
||||
// 其中syscall.SIGTERM, syscall.SIGINT表示程序终止信号,可以绑定一个方法在系统终止时进行调用
|
||||
// syscall.SIGHUP表示程序重启信号,可以绑定一个方法在系统重启时进行调用
|
||||
|
||||
// 使用方法:
|
||||
// 调用func Start(reloadFunc func() []error, exitFunc func() error)
|
||||
// 传入在重启和终止时需要调用的方法,如果不需要则传入nil
|
||||
56
trunk/framework/signalMgr/signal.go
Normal file
56
trunk/framework/signalMgr/signal.go
Normal file
@@ -0,0 +1,56 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
Reference in New Issue
Block a user