golang 关闭进程
在Go语言中,关闭进程有两种方式:
- 使用
os.Exit()函数,该函数会立即终止当前进程,并返回一个指定的退出状态码。例如,要关闭进程并返回状态码为0,可以使用如下代码:
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("Closing process...")
os.Exit(0)
}
- 使用
os.Signal和os.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() 函数关闭进程。主进程可以继续运行,直到接收到信号后关闭进程
原文地址: https://www.cveoy.top/t/topic/hPy9 著作权归作者所有。请勿转载和采集!