【发布时间】:2011-08-27 14:41:06
【问题描述】:
如果程序崩溃,是否可以自动重启?
类似:
- 引发未处理的异常。
- 释放进程分配的所有资源。
- 重新开始并调用 main。
我希望我正在处理的服务器应用程序具有这种行为。如果客户端错过了使用服务器,它可能会得到一个 std::bac_alloc 异常,在这种情况下,我希望服务器简单地重新启动而不是崩溃和关闭,从而避免手动启动。
【问题讨论】:
-
修复服务器不是更好吗?
-
@forsvarir - 是的。但是,您并不总是有能力做到这一点。例如,早在 SETI@Home 客户端早期,我曾经为它做过类似的事情,因为它偶尔会无缘无故地死掉。如果我去度假什么的,我可能会暂时没有注意到,这会导致我严重落后于我的同事。不能这样!
-
@T.E.D.:说得好,老实说,我过去曾使用 shell 脚本来做类似的事情(作为安全网)。但在这种情况下,感觉可能有人知道问题出在哪里......但已经晚了,也许我读得太多了:)
-
@forsvarir,我在没有编写或没有源代码的过程中遇到了类似的情况。当它崩溃时,我对凌晨 2 点的电话感到恼火,所以我最后写了一个监控程序,在它消失后重新启动进程。不是一个完美的结果,但我睡得好多了!
-
@forsavir:Ofc。但是很难做到 100% 没有问题。