signalCh := make(chan os.Signal, 1)创建了一个类型为 os.Signal 的带缓冲通道
- chan os.Signal 表示这是一个用于传递系统信号的通道
- 缓冲区大小为 1,这意味着通道可以存储一个信号而不阻塞发送方
通道通常用于接收操作系统发送给程序的信号,比如:
- SIGINT (Ctrl+C)
- SIGTERM (终止信号)
- SIGUSR1/SIGUSR2 (用户自定义信号)等
用法:
// 1. 创建信号通道 signalCh := make(chan os.Signal, 1)// 2. 注册要监听的信号 signal.Notify(signalCh, os.SIGINT, syscall.SIGTERM)// 3. 在 goroutine 中等待信号 go func() {
// 程序会在此处阻塞,直到接收到信号sig := <-signalCh// 处理接收到的信号fmt.Printf("Received signal: %v\n", sig) }()
