信号(signal)是unix及其兼容系统用来对进程通讯的一种方式,如果改进程注册了signal handler,当收到signal时会被调用,否则缺省处理程序被调用。只有两种信号不能被拦截和处理: SIGKILL和SIGSTOP
os/signal包中提供了Notify函数对signal进行处理,
func Notify(c chan<- os.Signal, sig …os.Signal)
package main
import (
"fmt"
"os"
"os/signal"
"time"
)
func main() {
go signalListen()
time.Sleep(time.Hour)
}
func signalListen() {
c := make(chan os.Signal)
signal.Notify(c)
for {
s := <-c
//handle
fmt.Println("get signal:", s)
os.Exit(1)
}
}