简介:
该包中的所有函数,都是处理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
停止接受所有的信号,撤销之前对c
的Notify
函数的作用,保证c
不会接受其余的信号了,即不能调用Notify
为之重新指定信号。
func Stop(c chan<- os.Signal)