golang进程信号怎么处理

avatar
作者
筋斗云
阅读量:0

在Go语言中,可以使用os/signal包来处理进程信号。下面是一个处理 SIGINTSIGTERM 信号的示例代码:

package main  import ( 	"fmt" 	"os" 	"os/signal" 	"syscall" )  func main() { 	// 创建一个接收信号的通道 	sigCh := make(chan os.Signal, 1) 	// 监听 SIGINT 和 SIGTERM 信号 	signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)  	// 开启一个 Goroutine 来等待信号 	go func() { 		// 通过通道接收信号 		sig := <-sigCh 		// 打印接收到的信号 		fmt.Printf("Received signal: %s\n", sig) 		// 执行清理操作,然后退出程序 		// ... 		os.Exit(0) 	}()  	// 主程序继续执行其他操作 	// ...  	// 阻塞主 Goroutine,等待信号 	select {} } 

在上面的示例代码中,我们首先创建一个用于接收信号的通道sigCh,然后使用signal.Notify函数监听SIGINTSIGTERM信号,并将它们发送到sigCh通道中。接下来,我们开启一个单独的Goroutine来等待信号,一旦接收到信号,就执行相应的操作(如打印接收到的信号、执行清理操作等),然后调用os.Exit(0)退出程序。最后,我们使用select {}来阻塞主Goroutine,使程序保持运行状态,直到接收到信号。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!