问题描述
我是 perl 的新手。我有一个使用 poe::wheel::run 启动多个子进程的进程。我正在尝试找到一种在收到 SIG{INT} 信号时优雅地停止轮子进程的方法。
当它检测到父进程没有运行时,我已经能够优雅地停止子进程。 我有一个 sig_int_handler 可以杀死所有进程(父进程和子进程)
我找不到让子进程检测并处理设置为 true 的 sig_int_flag 的方法。这可能吗???
我想...
- 接收 SIG{INT}
- 将变量设置为 sig_int_flag = 1(或其他)
- 处理程序发送收到信号的消息,然后休眠 30 秒。
- 30 秒后 -- 终止所有进程。
同时轮子在循环中
这个想法是给轮子 30 秒来完成它正在做的事情。如果子进程没有自行死亡——我们杀死它们。
这可能吗?
谢谢
解决方法
我找不到让子进程检测并处理设置为 true 的 sig_int_flag 的方法。这可能吗???
为了让孩子看到父母设置的相同标志,标志必须驻留在共享内存中。
另一种方法是向处理程序设置标志的子进程发送信号。