golang中的信号捕捉与处理,及常见信号含义

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")
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值