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

分类: 计算机技术
推荐阅读:
C语言isdigit()函数:判断字符是否为数字字符 isdigit()是C语言标准库中的一个函数,用于判断一个字符是否是数字字符(ASCII码为48~57);如果传入的字符参数是一个数字字符(0~9),则返回非0值,否则返回0;
Python中执行JavaScript代码 在Python爬虫运用中,经常会碰到需要模拟JS(JavaScript)代码所实现功能的场景。如果使用Python来模拟出JS的功能,不仅需要把JS代码转换成Python代码,而且还可能会碰到经过加密或压缩过的JS代码,这时就需要先解密JS代码,不是一件轻松的事,那么我们为什么不直接由Python来调用JS代码呢。
rand()和srand()函数在C语言中的应用 本文通过示例介绍rand()函数和srand()函数在C语言中的用法;
Python breakpoint()函数 breakpoint()是 Python 3.7 中新增的一个调试工具,它是一个内置函数,可以在程序执行过程中插入一个断点,让程序停在该处等待调试器的进一步命令。
打开任务管理的一瞬间CPU飙到很高,这种现象正常吗? Windows系统上的任务管理器(进程名Taskmgr.exe)用于实时显示计算机当前有关于性能、进程、服务等信息;细心的朋友会发现,在打开任务管理器的一瞬间,CPU使用率瞬间飙升,基本上会达到100%,随后也会很快回落,那这种现象正常么?
Linux删除所有与扩展名不匹配的文件 在Linux系统下,当你想删除某个文件夹下没有指定扩展名的所有文件时,你可以使用这条命令来实现,它将会删除目录下所有与扩展名不匹配的文件: