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 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
停止接受所有的信号,撤销之前对c
的Notify
函数的作用,保证c
不会接受其余的信号了,即不能调用Notify
为之重新指定信号。
func Stop(c chan<- os.Signal)
Golang处理信号相关推荐
- golang signal 信号简介
目录 1.1. 基本概念 1.2. Go 对信号的处理 1.2.1. Go 程序对信号的默认行为 1.2.2. 改变信号的默认行为 1.2.3. SIGPIPE 1.2.4. cgo 注意事项 1.3 ...
- golang context 父子任务同步取消信号 协程调度 简介
目录 前言 为什么需要context context是什么 context的使用 总结 前言 这篇文章将介绍Golang并发编程中常用到一种编程模式:context.本文将从为什么需要context出 ...
- golang 监听服务的信号,实现平滑启动,linux信号说明
监听服务的信号,实现平滑启动,linux信号说明 package mainimport ("context""fmt""golang.org/x/sy ...
- 【Golang】关于信号signal处理
我们在生产环境下运行的系统要求优雅退出,即程序接收退出通知后,会有机会先执行一段清理代码,将收尾工作做完后再真正退出.我们采用系统Signal来 通知系统退出,即kill pragram-pid.我们 ...
- golang中的信号
列出信号 发送信号 kill -SIGKILL PID 信号处理 通过kill命令给正在运行的程序发送信号 不处理的话,程序会panic处理 Signal handler可以通过signal()系统调 ...
- golang sdk后端怎么用_Golang资深后端工程师需要了解的知识点
前提: 因近段时间,我在考虑新的工作机会,并在自己的以往的工作内容做了一些简单的总结,以及部分在面试过程当中遇到了一些新的问题,总结一篇关于Golang工程师针对后端开发的一些知识点. 本文仅作为参考 ...
- golang异步协程调度原理
golang异步协程调度 在1.14的go版本中,官方通过加入信号来进行协程的调度,后续就都支持了这种异步协程抢占,避免了早起的考栈调度时来检查是否执行超时的逻辑.本文简单来对比这种实现的原理. 调度 ...
- 用Golang写一个搜索引擎(0x05)--- 文本相关性排序
上面我们已经说过了一些倒排索引的东西,并且也知道了如何来实现一个倒排索引完成检索功能,那么检索完了以后如何排序呢,这一篇简单的说一下倒排索引的文本相关性排序,因为排序实在是太复杂了,我们这里就说说文本 ...
- golang并发编程goroutine+channel(一)
go语言的设计初衷除了在不影响程序性能的情况下减少复杂度,另一个目的是在当今互联网大量运算下,如何让程序的并发性能和代码可读性达到极致.go语言的并发关键词 "go" go dos ...
最新文章
- win7如何为计算机添加用户名和密码,win7系统电脑,如何的设置共享,共享计算机的地用户名和密码怎样设置...
- Ubuntu16.04安装NVIDIA显卡(RTX20系列)驱动+CUDA10.0+cudnn+Pytorch1.1.0
- python异常处理关键字_Python中的异常处理
- _INTSIZEOF
- python批量提取pdf的数据_Python批量提取PDF文件中文本的脚本
- lol全队消息怎么发_LOL女神公开新男友?亲密合照网友酸了,随后粉丝反应太真实...
- android编程fragment,详解Android中Fragment的两种创建方式
- linux打包java jar_在linux环境下修改可运行jar包配置并重新打包
- LeetCode 5367. 最长快乐前缀
- python getsize_Python getsizeof()和getsize()区分详解
- 不让EditText打开就获取焦点
- idea的文件可以mysql运行吗,终于将tiny-sdpm+intellij idea+mysql+jettyt运行成功
- Appcan将支持在线编译提交App Store
- python没有报错但是没结果_python爬取豆瓣top250的电影的信息,没有报错哦,但是没有结果...
- AD15如何更新原理图库
- R语言-主成分分析和聚类分析实操(包含源码)
- 高中数学基础-2.2.1 对数及对数的运算(下)
- 王立平--scard0与scard1分别指的是什么?以及路径获取
- linux系统漏洞补丁包,RedHat 5.X、6.X Bash漏洞RPM补丁包下载
- EntityConnection ConnectionString
热门文章
- 【caffe】Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERRO
- 1007 素数对猜想(C语言)
- (C语言)字符串大小写无关查找替换
- MATLAB——判断两个矩阵的元素是否完全相同
- 【已解决】抱歉,由于某种原因,PowerPoint 无法加载D:\mathtype\Office Support\64\MathType(PowerPoint 2016).ppam加载项。
- vue动态添加style样式
- 创造型模式-生成器模式
- impala 使用记录
- 关于 jquery和js获取宽度时只能取整数,取不到小数点
- linux 下Eclipse for C/C++的不常见设置