【发布时间】:2012-10-16 02:10:33
【问题描述】:
我有一个使用 POE::Component::IRC 的简单 IRC 机器人。只有当我试图通过退出一条有用的消息来使其优雅地处理 SIGINT 时,我才发现我根本无法让它退出任何消息,无论是作为信号处理程序的一部分还是只是正常调用退出。
假设我已经创建了这样的会话:
POE::会话->创建( inline_states => { irc_disconnected => \&bot_reconnect, irc_error => \&bot_reconnect, irc_socketerr => \&bot_reconnect, 连接 => \&bot_reconnect, . . . }, );而bot_reconnect 只是要连接回 IRC 应该
出了什么问题:
如果,在代码中的其他任何地方,我将 shutting_down 设置为 1 并告诉它
退出(例如$irc->yield(quit => "bye!"))它立即退出
没有退出消息的 IRC(“客户端退出”,ircd 显示)
或者“远程主机关闭连接”。
然后它接收到irc_disconnected 事件,该事件将它带到
上面的bot_reconnect,其中shutdown 似乎什么都不做
全部。事实上,如果我没有明确地 exit 0 之后 shutdown
然后这个过程就一直处于不确定状态,没有任何连接到 IRC
更多。
这是应该发生的事情吗?
我找到了:
说要使用shutdown。如你所见,我试过了,它
好像没用。
我还在另一个问题中找到了一些示例代码:
How do I correctly shutdown a Bot::BasicBot bot (based on POE::Component::IRC)?
但是,这与我现在拥有的非常相似,而且也不 似乎行为有所不同。
libpoe-component-irc-perl的包版本是6.78+dfsg-1 所以
如上面的 URL 所说,应该大于 6.50。
有什么想法吗?
【问题讨论】: