简介:

该包中的所有函数,都是处理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 mainimport ("fmt""os""os/signal""time"
)var chSignal chan os.Signalfunc dealSignal() {for {<-chSignalfmt.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 mainimport ("os""os/signal""fmt"
)func main() {c := make(chan os.Signal, 1)signal.Notify(c, os.Interrupt)signal.Ignore(os.Interrupt)    // 中断无效<-cfmt.Println("Got signal: ", c)
}

func Reset

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

func Reset(sig ...os.Signal)

func Stop

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

func Stop(c chan<- os.Signal)

Golang处理信号相关推荐

  1. golang signal 信号简介

    目录 1.1. 基本概念 1.2. Go 对信号的处理 1.2.1. Go 程序对信号的默认行为 1.2.2. 改变信号的默认行为 1.2.3. SIGPIPE 1.2.4. cgo 注意事项 1.3 ...

  2. golang context 父子任务同步取消信号 协程调度 简介

    目录 前言 为什么需要context context是什么 context的使用 总结 前言 这篇文章将介绍Golang并发编程中常用到一种编程模式:context.本文将从为什么需要context出 ...

  3. golang 监听服务的信号,实现平滑启动,linux信号说明

    监听服务的信号,实现平滑启动,linux信号说明 package mainimport ("context""fmt""golang.org/x/sy ...

  4. 【Golang】关于信号signal处理

    我们在生产环境下运行的系统要求优雅退出,即程序接收退出通知后,会有机会先执行一段清理代码,将收尾工作做完后再真正退出.我们采用系统Signal来 通知系统退出,即kill pragram-pid.我们 ...

  5. golang中的信号

    列出信号 发送信号 kill -SIGKILL PID 信号处理 通过kill命令给正在运行的程序发送信号 不处理的话,程序会panic处理 Signal handler可以通过signal()系统调 ...

  6. golang sdk后端怎么用_Golang资深后端工程师需要了解的知识点

    前提: 因近段时间,我在考虑新的工作机会,并在自己的以往的工作内容做了一些简单的总结,以及部分在面试过程当中遇到了一些新的问题,总结一篇关于Golang工程师针对后端开发的一些知识点. 本文仅作为参考 ...

  7. golang异步协程调度原理

    golang异步协程调度 在1.14的go版本中,官方通过加入信号来进行协程的调度,后续就都支持了这种异步协程抢占,避免了早起的考栈调度时来检查是否执行超时的逻辑.本文简单来对比这种实现的原理. 调度 ...

  8. 用Golang写一个搜索引擎(0x05)--- 文本相关性排序

    上面我们已经说过了一些倒排索引的东西,并且也知道了如何来实现一个倒排索引完成检索功能,那么检索完了以后如何排序呢,这一篇简单的说一下倒排索引的文本相关性排序,因为排序实在是太复杂了,我们这里就说说文本 ...

  9. golang并发编程goroutine+channel(一)

    go语言的设计初衷除了在不影响程序性能的情况下减少复杂度,另一个目的是在当今互联网大量运算下,如何让程序的并发性能和代码可读性达到极致.go语言的并发关键词 "go" go dos ...

最新文章

  1. win7如何为计算机添加用户名和密码,win7系统电脑,如何的设置共享,共享计算机的地用户名和密码怎样设置...
  2. Ubuntu16.04安装NVIDIA显卡(RTX20系列)驱动+CUDA10.0+cudnn+Pytorch1.1.0
  3. python异常处理关键字_Python中的异常处理
  4. _INTSIZEOF
  5. python批量提取pdf的数据_Python批量提取PDF文件中文本的脚本
  6. lol全队消息怎么发_LOL女神公开新男友?亲密合照网友酸了,随后粉丝反应太真实...
  7. android编程fragment,详解Android中Fragment的两种创建方式
  8. linux打包java jar_在linux环境下修改可运行jar包配置并重新打包
  9. LeetCode 5367. 最长快乐前缀
  10. python getsize_Python getsizeof()和getsize()区分详解
  11. 不让EditText打开就获取焦点
  12. idea的文件可以mysql运行吗,终于将tiny-sdpm+intellij idea+mysql+jettyt运行成功
  13. Appcan将支持在线编译提交App Store
  14. python没有报错但是没结果_python爬取豆瓣top250的电影的信息,没有报错哦,但是没有结果...
  15. AD15如何更新原理图库
  16. R语言-主成分分析和聚类分析实操(包含源码)
  17. 高中数学基础-2.2.1 对数及对数的运算(下)
  18. 王立平--scard0与scard1分别指的是什么?以及路径获取
  19. linux系统漏洞补丁包,RedHat 5.X、6.X Bash漏洞RPM补丁包下载
  20. EntityConnection ConnectionString

热门文章

  1. 【caffe】Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERRO
  2. 1007 素数对猜想(C语言)
  3. (C语言)字符串大小写无关查找替换
  4. MATLAB——判断两个矩阵的元素是否完全相同
  5. 【已解决】抱歉,由于某种原因,PowerPoint 无法加载D:\mathtype\Office Support\64\MathType(PowerPoint 2016).ppam加载项。
  6. vue动态添加style样式
  7. 创造型模式-生成器模式
  8. impala 使用记录
  9. 关于 jquery和js获取宽度时只能取整数,取不到小数点
  10. linux 下Eclipse for C/C++的不常见设置