標籤:blog http os ar for sp div on log
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 := <-sigsfmt.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 10323kill -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處理