signal.Notify(interruptListener, os.Interrupt) 是什么意思?

请问下,这几句代码是什么意思?


interruptListener := make(chan os.Signal)
signal.Notify(interruptListener, os.Interrupt)
<-interruptListener
log.Println(" listener is closing")

我有2个问题:
1.这几句代码是表达什么意思呢?
2.signal.Notify(interruptListener, os.Interrupt) 是什么意思?
3.<-interruptListener 这句话有何作用?如果不执行,是否下面的log不会执行?

阅读 2.6k
2 个回答
  1. 监听系统中断信号, 如果收到系统中断信号, 执行 log.Println()
  2. signal.Notify(interruptListener, os.Interrupt) 表示获取系统的中断信号并发送到 interruptListener 通道,可参考 https://gobyexample.com/signals
  3. <-interruptListener 表示从通道接收, 如果无系统中断, 此处会引起当前 goroutine 阻塞, 直到接收到系统中断信号后才会执行下行的 log.Println()

1.一般程序在主动/非主动终止的时候,直接退出,这段代码应用程序收到特定中断信号时执行相应的收尾操作,比如记日志等
2.signal.Notify(interruptListener, os.Interrupt) 是注册os.Interrupt信号量
3.interruptListener 是无缓冲通道,如果无接收到os.Interrupt信号,则阻塞程序,下面代码无法执行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进