在Go语言中,关闭进程有两种方式:

  1. 使用 os.Exit() 函数,该函数会立即终止当前进程,并返回一个指定的退出状态码。例如,要关闭进程并返回状态码为0,可以使用如下代码:
package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println("Closing process...")
	os.Exit(0)
}
  1. 使用 os.Signalos.Notify 实现优雅的关闭进程。这种方式可以在接收到指定的操作系统信号时,执行一些清理操作后再关闭进程。例如,要在接收到 SIGINT 信号时关闭进程,可以使用如下代码:
package main

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

func main() {
	// 创建一个信号接收器
	sigCh := make(chan os.Signal, 1)
	signal.Notify(sigCh, syscall.SIGINT)

	// 启动一个goroutine等待信号
	go func() {
		// 接收到信号时执行一些清理操作
		<-sigCh
		fmt.Println("Cleaning up...")
		// 清理操作完成后关闭进程
		os.Exit(0)
	}()

	// 保持主进程运行,这里可以是你的业务逻辑
	for {
		// do something...
	}
}

在上述代码中,我们使用 os/signal 包创建了一个信号接收器,并通过 signal.Notify 函数将接收到的 SIGINT 信号发送到 sigCh 通道。然后,在一个单独的goroutine中,我们从 sigCh 通道接收信号,并在接收到信号时执行一些清理操作,最后调用 os.Exit() 函数关闭进程。主进程可以继续运行,直到接收到信号后关闭进程

golang 关闭进程

原文地址: https://www.cveoy.top/t/topic/hPy9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录