Go语言学习基础-信号、退出

Go语言学习基础-信号、退出结果:$go run signals.goawaiting signal^CinterruptexitingExit 退出使用函数os.Exit

欢迎大家来到IT世界,在知识的湖畔探索吧!

Signal 信号

有时我们希望Go程序能够智能地处理Unix信号。例如,我们可能希望服务器在接收到SIGTERM时能够正常关机,或者希望命令行工具在接收到SIGINT时停止处理输入。下面程序演示Go中如何使用通道来处理信号。

Go的信号通知工作由在通道中发送os.Signal值来实现。首先,创建一个通道来接收这些通知(以及一个在程序退出时发出通知的通道)。然后,使用函数signal.Notify通知寄存器该通道要接收哪些指定的信号通知。接着,程序中的协程用于执行阻塞接收指定的信号,当得到一个信号时,便打印出来,然后通知程序工作完成。程序在结束通道上等待,直到它得到一个值,然后退出。当运行这个程序,它将阻塞等待。通过键入CTRL C(终端上显示为^ C),我们可以发送SIGITN信号,程序打印中断信号的值,然后退出。

Go语言学习基础-信号、退出

结果:

$ go run signals.go

awaiting signal

^C

interrupt

exiting

Exit 退出

使用函数os.Exit以指定的退出码立刻结束程序,当使用os.Exit时defer语句不会执行,因此示例中的fmt.Println永远不会执行。程序以状态3退出。注意,与C不同的是,GO不会使用main函数的整数返回值来作为指示退出状态,如果想以非零状态结束程序,则应该使用os.Exit函数。使用go run执行程序时,Go获得退出状态码并打印出来。通过建立和执行该程序的二进制文件,你可以从终端中看到它退出的状态码。

Go语言学习基础-信号、退出

结果:

$ go run exit.go

exit status 3

$ go build exit.go

$ ./exit

$ echo $?

3

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/48345.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信