首页 > 代码库 > Go中的系统Signal处理
Go中的系统Signal处理
package mainimport "fmt"import "os"import "os/signal"import "syscall"func main() { go SignalProc() done := make(chan bool, 1) for { select { case <-done: break } } fmt.Println("exit")}func SignalProc() { sigs := make(chan os.Signal) signal.Notify(sigs, syscall.SIGINT, syscall.SIGUSR1, syscall.SIGUSR2, syscall.SIGHUP, os.Interrupt) for { msg := <-sigs fmt.Println("Recevied signal:", msg) switch msg { default: fmt.Println("get sig=%v\n", msg) case syscall.SIGHUP: fmt.Println("get sighup\n") case syscall.SIGUSR1: fmt.Println("SIGUSR1 test") case syscall.SIGUSR2: fmt.Println("SIGUSR2 test") } }}
// kill -USR1 10323
kill -USR2 10323
kill -n 2 10323
可以 SIGUSR1 做一些配置的重新加载
SIGUSR2 可以做一些游戏base的重新加载
捕获ctrl + c信号
signal.Notify(c, os.Interrupt)
指令: kill -Num ProcessId(pid)
信號簡稱 | 數值 | 代表意義 |
---|---|---|
HUP | 1 | 控制中的終端/程序中斷 |
INT | 2 | 鍵盤的插入指令(同 Ctrl + C) |
QUIT | 3 | 鍵盤的中斷指令(同 Ctrl + \) |
TERM | 15 | 程序的終止指令 |
KILL | 9 | 程序的強制終止指令(暴力砍掉) |
CONT | 18 | 程序的再啟動指令(STOP(19) 後再重新啟動) |
STOP | 19 | 程序的停止指令(同 Ctrl + Z) |
一般如果關機的話, 系統是會先送 TERM(15) 的訊號來終止 process, 不行才會送 KILL(9) 來終止程式.
转自:http://sugarmanman.blog.163.com/blog/static/8107908020136713147504/
Go中的系统Signal处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。