首页 > 技术文章 > go捕获Ctrl+C信号

chenqionghe 2018-09-27 14:50 原文

我们希望当服务器接收到一个 SIGTERM 信号时能够自动关机,或者做一些善后的操作,以下是实现的方法

package main

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

func main() {
	sigs := make(chan os.Signal, 1)
	done := make(chan bool, 1)

	//设置要接收的信号
	signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)

	go func() {
		sig := <-sigs
		fmt.Println()
		fmt.Println(sig)
		done <- true
	}()

	fmt.Println("等待信号")
	<-done
	fmt.Println("进程被终止")
}

  

推荐阅读