GO学习笔记-监听OS信号

Posted breaklinux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO学习笔记-监听OS信号相关的知识,希望对你有一定的参考价值。

1.示例代码

package main

import (
"fmt"
"os"
"os/signal"
"syscall"
)

func main()
// syscall.SIGINT 中断信号
//管道
fmt.Println("pid:",os.Getpid())
interrupt := make(chan os.Signal,1)
reload := make(chan os.Signal,1)
signal.Notify(interrupt,syscall.SIGINT)
signal.Notify(reload,syscall.SIGHUP)
//监听系统信号;go doc syscall.SIGKILL 查看系统信号
//signal.Notify(signalChannel,syscall.SIGINT,syscall.SIGHUP)

//处理信号
INTERRUPT:
for
select
case <-interrupt:
break INTERRUPT
case <-reload:
fmt.Println("reload")


2.编译操作

bogon$ set GOOS=linux  #交叉编译
bogon$ go mod init daySignal
go: creating new go.mod: module daySignal
go: to add module requirements and sums:
go mod tidy
bogon$ go mod tidy
bogon$ go build

3.验证测试;

bogon$ ./daySignal 
pid: 4663

bogon$ ps -ef |grep 4663 |grep -v grep
501 4663 3885 0 3:16PM ttys000 0:00.01 ./daySignal
bogon$ kill -1 4663

bogon$ ./daySignal
pid: 4663
reload


以上是关于GO学习笔记-监听OS信号的主要内容,如果未能解决你的问题,请参考以下文章

go 笔记

Go+ 信号处理教程(4.27)

Go语言-信号os.Interrupt和信号syscall.SIGTERM的应用

go 项目监听重启

Scoket--并发操作--Go语言学习笔记

Go语言学习笔记文件操作