c语言的信号量都很容易理解了,注册回调函数就行了
go中的有所不同,是通过个go程和chan来处理的
func main(){
gosignalHandle() //用go程执行信号量处理函数
。。。。处理其他逻辑
}
func signalHandle() { for { ch := make(chan os.Signal) signal.Notify(ch,syscall.SIGINT,syscall.SIGUSR1,syscall.SIGUSR2,syscall.SIGHUP) sig := <-ch Utils.LogInfo("Signal received: %v",sig) switch sig { default: Utils.LogInfo("get sig=%vn",sig) case syscall.SIGHUP: Utils.LogInfo("get sighupn") //Utils.LogInfo是我自己封装的输出信息函数 case syscall.SIGINT: os.Exit(1) case syscall.SIGUSR1: Utils.LogInfo("usr1n") case syscall.SIGUSR2: Utils.LogInfo("usr2n")
} } } (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|