signal.Notify 监听不到 托管到 supervisor 服务的启动/停止信号

2023-05-30 11:17:50 +08:00
 funky

如题所述,监听不到,但是启动的时候会有

signal:urgent I/O condition
735 次点击
所在节点    Go 编程语言
5 条回复
julyclyde
2023-05-31 11:04:56 +08:00
先发代码和实验过程
funky
2023-05-31 13:26:22 +08:00
以下是伪代码
```
shutdown:= make(chan os.Signal,1),
signal.Notify(shutdown)
go func() {
for {
ss := <-shutdown
log.Printf("signal:%s", ss.String())
return
}
}()
```
我在其他的地方阻塞了主线程,当我用 supervisor 托管我的服务
stop xxx(我的程序在 supervisor 的名称)
日志没有任何打印
start xxx(我的程序在 supervisor 的名称)
日志过会才有打印
``` signal:urgent I/O condition ```
julyclyde
2023-06-01 16:43:20 +08:00
那如果不在 supervisord 下面运行呢,可以正常收到么?
funky
2023-06-01 18:12:39 +08:00
不进行托管的话可以正常捕获
funky
2023-06-01 18:34:33 +08:00
@funky 挂载到 system service 就可以正常捕获到,看来 supervisor 和系统不一致

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/944135

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX