Golang处理信号

简介:

该包中的所有函数,都是处理os.Signal的,os.Signal用于接受各种类型的信号,比如中断、程序终止等,这些信号的具体作用可以参考:https://golang.org/pkg/os/signal/ 中的介绍。我们根据需要使用中断,可以控制程序运行时间等。

针对Linux/Unix系统处理信号,有些类似C语言方式,具体可以回顾这篇笔记.

函数的使用:

func Notify

启动一个信号的作用,c不一定是只写的,可以是读写都行的channel,自动的进行类型转换。

func Notify(c chan<- os.Signal, sig ...os.Signal)

该函数使得c这个os.Signal接收指定类型的信号,如果不声明来的型号的类型,则默认接收所有的信号,代码实例:

package main

import (
	"fmt"
	"os"
	"os/signal"
	"time"
)

var chSignal chan os.Signal

func dealSignal() {
	for {
		<-chSignal
		fmt.Println("Get INT signal...")
	}
}

func main() {
	chSignal = make(chan os.Signal, 1)
	signal.Notify(chSignal, os.Interrupt)
	go dealSignal()
	for {
		time.Sleep(1 * time.Second)
	}
}

func Ignore

该函数使得应用程序忽略指定的来临信号,如果没有指定信号,则忽略所有的信号。

func Ignore(sig ...os.Signal)

同时,该函数会撤销先前的Notify调用的结果。
代码实例,使得上一个例子中的中断无效:

package main

import (
	"os"
	"os/signal"
	"fmt"
)

func main() {
	c := make(chan os.Signal, 1)
	signal.Notify(c, os.Interrupt)
	signal.Ignore(os.Interrupt)    // 中断无效
	<-c
	fmt.Println("Got signal: ", c)
}

func Reset

撤销之之前指定程序能接收的信号,但是可以重新使用Notify指定接收的信号。

func Reset(sig ...os.Signal)

func Stop

该函数是c停止接受所有的信号,撤销之前对cNotify函数的作用,保证c不会接受其余的信号了,即不能调用Notify为之重新指定信号。

func Stop(c chan<- os.Signal)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值