golang中os/signal包的使用

os/signal包实现对信号的处理

golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。

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

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

第一个参数表示接收信号的channel, 第二个及后面的参数表示设置要监听的信号,如果不设置表示监听所有的信号。

func main() {c := make(chan os.Signal, 0)signal.Notify(c)
//c := make(chan os.Signal, 1)
//signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT, syscall.SIGSTOP)// Block until a signal is received.s := <-cfmt.Println("Got signal:", s) //Got signal: terminated}

结果分析:运行该程序,然后在终端中通过kill命令杀死对应的进程,便会得到结果

func Stop(c chan<- os.Signal)

func main() {c := make(chan os.Signal, 0)signal.Notify(c)signal.Stop(c) //不允许继续往c中存入内容s := <-c       //c无内容,此处阻塞,所以不会执行下面的语句,也就没有输出fmt.Println("Got signal:", s)
}

由于signal存入channel中,所以可以利用channel特性,通过select针对不同的signal使得系统或者进程执行不同的操作.

golang中os/signal包的使用相关推荐

  1. 31-【go】系统信号介绍、Go语言中使用os/signal包实现对信号的处理

    一.系统信号介绍 系统信号介绍_Agoni_xiao的博客-CSDN博客 二.Go语言中使用os/signal包实现对信号的处理 Go语言中os/signal包的学习与使用 - 人艰不拆_zmc - ...

  2. golang中container/list包中的坑

    转载地址:golang中container/list包中的坑 - Go语言中文网 - Golang中文社区 golang中list包用法可以参看golang中container/list包用法_che ...

  3. php_os用法,golang中os包用法

    os包中实现了平台无关的接口,设计向Unix风格,但是错误处理是go风格,当os包使用时,如果失败之后返回错误类型而不是错误数量. os包中函数设计方式和Unix类似,下面来看一下. func Chd ...

  4. Golang中log日志包的使用

    文章目录 1.前言 2.log包介绍 3.log包的使用 3.1 日志输出方法 3.2 自定义创建日志对象 3.3 封装自定义日志包 3.4 log包进一步解析 1.前言 作为后端开发人员,日志文件记 ...

  5. 深入理解Golang中的Context包

    context.Context是Go语言中独特的设计,在其他编程语言中我们很少见到类似的概念.context.Context深度支持Golang的高并发. 1. Goroutine和Channel 在 ...

  6. Golang中import 导入包的几种方式:点,别名与下划线

    在写Go代码的时候经常用到import这个命令用来导入包文件,看到的方式参考如下: import (// 多个"google.golang.org/grpc""imcs/ ...

  7. Golang中path/filepath包

    path/filepath包下的相关函数 1. ToSlash函数 func ToSlash(path string) string 功能:将path中平台相关的路径分隔符转换成'/' 例如:wind ...

  8. golang 中的sort 包

    sort接口 一个很好的例子是来自标准库的 sort 包,要对一组数字或字符串排序,只需要实现三个方法:反映元素个数的 Len() 方法.比较第 i 和 j 个元素的 Less(i, j) 方法以及交 ...

  9. Golang中os.Reader和ReaderAt的区别,及ReaderAt快速读取日志文件的实现

    go中区别Read和ReadAt 一.os.Read() 二.os.ReadAt() 三.os.Read()和os.ReadAt()区别及注意事项 一.os.Read() // Read reads ...

最新文章

  1. 【LOJ】#3098. 「SNOI2019」纸牌
  2. win10装机 哪个版本最稳定
  3. windows系统服务器添加ssl证书
  4. vue 父组件获取接口值传到子组件_vue父组件异步获取数据传给子组件的方法
  5. 【Python3_进阶系列_004】Python3-工厂设计模式
  6. [Linux] Ubuntu13.04 搭建OK6410-A开发板的开发环境
  7. 调用sklearn包中的PLA算法[转载]
  8. c语言编写面向对象的类
  9. t470键盘拆解_thinkpad t470怎么样?thinkpad t470拆机图解全面评测
  10. crmeb多商户1.7.3
  11. 图片太大如何压缩?学会这个方法轻松压缩
  12. 激光雷达 vs. 雷达【选型比较】
  13. android怎么点击换图片,ImageButton单击切换按钮图片
  14. OneNote应用技巧
  15. 数据库勒索病毒故障处理
  16. 指针 Swap交换函数
  17. 小强期中考试(考察1-9章)
  18. Android实战(二)—— 房贷计算器
  19. Oracle中表的键和检查,Oracle 过程中检查数据表存在与否
  20. wolframalpha最新版_WolframAlpha安卓版中文最新版

热门文章

  1. python对淘宝运营有帮助吗_淘宝运营,有前途吗?
  2. p值 统计学意义_统计学意义不重要为什么p值不应过高
  3. 怎么给word插入页码,详细图文教学,轻松学会
  4. 取消UOS双系统开机启动
  5. ImportError:undefined symbol: _ZN2at5sliceERKNS_6TensorElN3c108optionalIlEES5_l
  6. 为何沃比帕克模式无法复制?
  7. 《28岁未成年》感悟——永远不要失去自我
  8. 爬取笔趣阁小说网站上的所有小说(二)
  9. 【论文】模型剪枝(Network Pruning)论文详细翻译
  10. 华为的海外员工生活写实