Signal

概述 #

调用 os/signal 包即可。

例子 #

监听信号 #

package main

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

func main() {
	c := make(chan os.Signal, 1)
	signal.Notify(c, os.Interrupt)

	fmt.Println("程序执行中... 按 Ctrl + C 终止执行")

	<-c // 等待信号被触发
	fmt.Println("程序执行终止")
}

// $ go run main.go
// 输出如下 
/**
  程序执行中... 按 Ctrl + C 终止执行
  ^C程序执行终止
*/

限制 #

SIGKILL 信号 和 SIGSTOP 信号无法被捕获,这是内核的限制, 目的是为了让操作系统控制进程的生命周期。

转载申请

本作品采用 知识共享署名 4.0 国际许可协议 进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,商业转载请联系作者获得授权。

© 蛮荆 | 陕公网安备 61011302001681 号 | 陕ICP备2023004378号-1 | Rendered by Hugo