有时我们希望Go程序能够智能地处理Unix信号。 例如,可能希望服务器在接收到SIGTERM
时正常关闭,或者在收到SIGINT
时使用命令行工具停止处理输入。下面介绍如何使用Go语言处理信号。
Go语言中,使用os.Exit
立即退出并返回给定状态。
当使用os.Exit
时,defers
不会运行。
所有的示例代码,都放在
F:\worksp\golang
目录下。安装Go编程环境请参考:/tutorial/detail-5562.html
signal.go
的完整代码如下所示 -
package main import "fmt" import "os" func main() { // `defer`s will _not_ be run when using `os.Exit`, so // this `fmt.Println` will never be called. defer fmt.Println("!") // Exit with status 3. os.Exit(3) } // Note that unlike e.g. C, Go does not use an integer // return value from `main` to indicate exit status. If // you'd like to exit with a non-zero status you should // use `os.Exit`.
执行上面代码,将得到以下输出结果 -
F:\worksp\golang>go run exit.go exit status 3