Go如何监听Linux系统信号
2021/7/1 7:21:09
本文主要是介绍Go如何监听Linux系统信号,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、什么系统信号?
详细信息请查阅:https://www.cnblogs.com/senior-engineer/p/5979992.html
二、使用go代码去监听
- 交叉编译 (在cmd里面设置)
- 想在Linux上运行
- set GOOS=linux (go GOOS=windows )
- go build ,然后得到个二进制程序
- 想在Linux上运行
package main import ( "fmt" "os" "os/signal" "syscall" ) func main() { // 获取pid fmt.Println("pid: ", os.Getpid()) // 管道 interrupt := make(chan os.Signal, 1) reload := make(chan os.Signal, 1) // 监听系统信号,一般只监听 SIGINT(中断信息相当于Ctrl + c) SIGHUP 这2种信号 signal.Notify(interrupt, syscall.SIGINT) signal.Notify(reload, syscall.SIGHUP) // 等待信号,读取管道 INTERRUPT: for { select { case <-interrupt: break INTERRUPT case <-reload: fmt.Println("raload") } } }
三、Linux上运行
3.1、运行
[root@prometheus test]# ll total 1768 -rwxr-xr-x 1 root root 1807789 Jul 1 02:07 signal [root@prometheus test]# ./signal pid: 23988
3.2、测试
# 1、确定成功运行 [root@prometheus ~]# ps -ef| grep signal root 23988 23907 0 02:19 pts/0 00:00:00 ./signal root 23996 23950 0 02:19 pts/1 00:00:00 grep --color=auto signal # 2、发送一个SIGHUP信号给signal,控制台打印reload则表示成功 [root@prometheus ~]# kill -SIGHUP 23988 # 3、查看 [root@prometheus test]# ./signal pid: 23988 raload
# 4、 按键盘Ctrl + c。则是给一个SIGINT信号。就退出进程 [root@prometheus test]# ./signal pid: 23988 raload ^[root@prometheus test]#
这篇关于Go如何监听Linux系统信号的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法
- 2024-08-21【Linux】gnome桌面环境切换KDE Plasma
- 2024-08-19如何安装 VMware Tools (macOS, Linux, Windows)
- 2024-08-15Linux部署Scrapy教程:入门级指南