有时我们希望go程序能够智能地处理unix信号。 例如,可能希望服务器在接收到sigterm
时正常关闭,或者在收到sigint
时使用命令行工具停止处理输入。下面介绍如何使用go语言处理信号。
go语言中,使用os.exit
立即退出并返回给定状态。
当使用os.exit
时,defers
不会运行。
所有的示例代码,都放在
f:\worksp\golang
目录下。安装go编程环境请参考:http://www.h3.com/go/go_environment.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