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解析TOML,结构体序列化和反序列化 在Rust中,可以使用标准库中的toml模块来解析和生成TOML格式的数据;serde与toml模块集成,可以将TOML字符串解析为任意Rust结构体,或将rust结构体序列化为TOML格式的字符串。
Python实现猜拳小游戏 曾经给一个小屁孩做的作业,放出来分享。。。实现思路: 定义一个玩家类;实现获取用户的输入。 定义一个机器人类;实现机器人的输入。 定义一个裁判类;裁判判断双方胜负。 定义游戏桌面;实现游戏的启动和管理。
spim:(parser) Label is defined for the second time 解决方法 在使用QtSpim读取汇编语言文件时提示:Label is defined for the second time on line xx of file xxx main:,出现这个错误是因为你没有在载入文件前初始化你的模拟器;
Python调用谷歌翻译API实现文本翻译 使用Python向谷歌翻译URL进行GET请求,得到网页内容后使用正则表达式进行解析,获得翻译结果;
Rust语言中获取数组的大小 Rust语言中,数组提供len()方法可获取数组中的元素数量,即数组的大小;
Python使用蒙特卡洛法计算圆周率 蒙特卡洛方法通过在单位正方形内随机生成点,并判断这些点是否在单位圆内的比例来估算圆周率。当随机点数量越多时,估算值越趋近于真实值。