1. 介绍
文档地址:https://pkg.go.dev/os/signal
Go 标准库 os/signal 用于处理信号。
操作系统所有的信号数字id和名称可以通过命令 kill -l
来查看,要对某个进程发送某个信号则可以执行 kill -n <pid>
。
当接收到中断信号时,将信号发送至通道:
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
// Block until a signal is received.
s := <-c
当接收到任何信号时,将信号发送至通道:
c := make(chan os.Signal, 1)
signal.Notify(c)
// Block until a signal is received.
s := <-c
2. 函数
// Ignore 忽略信号
func Ignore(sig ...os.Signal)
// Ignored 是否已忽略某个信号
func Ignored(sig os.Signal) bool
// Notify 接收到信号后发送至通道
func Notify(c chan<- os.Signal, sig ...os.Signal)
// Reset 取消Notify对某个信号的接收
func Reset(sig ...os.Signal)
// Stop 取消Notify对某个通道的发送
func Stop(c chan<- os.Signal)