Golang捕获Ctrl+C的系统信号并作出响应

通常,当操作系统要停止你的进程时,会向你的进程发送信号,如果你需要在进程结束前处理一些事务,那么你需要捕获这些信号;

在Go语言中,你可以使用标准库中的os/signal包来捕获系统信号;

下面这个示例将向你展示如何在Golang中,将系统中的所有信号分配给一个通道,然后如何对这些信号做出反应。

示例代码:

package main

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

func main(){

	sigChan := make(chan os.Signal)

	signal.Notify(sigChan)

	select{
	case sig:=<-sigChan:
		fmt.Println("接受到来自系统的信号:",sig)
	}
}

当你运行上述程序时,它将创建一个通道,然后阻塞直到该通道接受到来自系统的信号并打印出该信号;运行程序后按下Ctrl + C,他将接收一个SIGINT信号。

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/assigning-signals-to-a-channel.html

分类: 计算机技术
推荐阅读:
Rust实现删除文件 在 Rust 中,要删除文件,您可以使用标准库中的 std::fs 模块的 remove_file 函数。
查看Linux系统是32位还是64位 在Linux系统下,你可以通过一条命令获得系统是32位的还是64位的:
Python locals()函数 在 Python 中,locals() 是一个内置函数,用于返回当前作用域中的所有局部变量的字典。在函数内部,locals() 返回该函数的局部变量。在模块级别上,locals() 返回全局变量。
Python中@property和@*.setter装饰器的详细用法 @property装饰器的作用是,将一个函数装饰成为类的一个属性,当某个属性需要动态的计算时,用@property来装饰函数最好不过了;
禁用Visual Studio自动下载更新 近日,作者使用Visual Studio发现,Visual Studio会自己在后台下载更新内容,然后提醒你是否安装;因为Visual Studio的更新包体积庞大,不仅占用网络资源也会消耗磁盘性能,所以我决定禁用它;
Python __import__()函数 __import__() 函数是一个高级函数,用于动态地导入模块。与 import 语句不同,__import__() 函数可以在运行时动态地导入模块,使得程序可以更加灵活地处理模块的导入。