golang 中的signal 包的Notify函数
函数声明为
func Notify(c chan<- os.Signal, sig ...os.Signal)
官方描述:
Notify函数让signal包将输入信号转发到c。如果没有列出要传递的信号,会将所有输入信号传递到c;否则只传递列出的输入信号。
signal包不会为了向c发送信息而阻塞(就是说如果发送时c阻塞了,signal包会直接放弃):调用者应该保证c有足够的缓存空间可以跟上期望的信号频率。对使用单一信号用于通知的通道,缓存为1就足够了。
示例代码:
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
)
func SignalHandle() {
ch := make(chan os.Signal, 1)
signal.Notify(ch, syscall.SIGUSR1, syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT)
for {
s := <-ch
switch s {
case syscall.SIGUSR1:
fmt.Println("receive signal SIGUSR1, program will exit")
case syscall.SIGHUP:
fmt.Println("receive signal SIGHUP, program will exit")