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")
os.Exit(1)
case syscall.SIGINT:
fmt.Println("receive signal

本文详细介绍了Golang中信号处理的`signal.Notify`函数及其工作原理,列举并解释了常见的UNIX信号,如SIGHUP、SIGINT、SIGQUIT等,分析了它们在不同场景下的应用和默认行为。
1774

被折叠的 条评论
为什么被折叠?



