如果程序崩溃了,是否有可能自动重启程序?
类似于以下的处理流程:
- 抛出未处理的异常。
- 释放进程分配的所有资源。
- 重新开始并调用主函数。
我正在开发一个服务器应用程序,希望实现这种行为。如果客户端误用服务器,它可能会产生std::bac_alloc异常,此时我希望服务器能够简单地重启而不是崩溃关闭,从而避免手动启动。
如果程序崩溃了,是否有可能自动重启程序?
类似于以下的处理流程:
我正在开发一个服务器应用程序,希望实现这种行为。如果客户端误用服务器,它可能会产生std::bac_alloc异常,此时我希望服务器能够简单地重启而不是崩溃关闭,从而避免手动启动。
CreateProcess()
。您可以通过对进程的句柄执行WaitForSingleObject来等待进程退出,进程的句柄是从您的CreateProcess()
调用的返回值之一。ChangeServiceConfig2
来设置服务的故障操作。(如果您的服务器不是服务,则可能出错了。)将SERVICE_CONFIG_FAILURE_ACTIONS
指定为dwInfoLevel
参数,并在SERVICE_FAILURE_ACTIONS
结构中,将lpsaActions
设置为一个或多个SC_ACTION
值的数组。您需要的类型是SC_ACTION_RESTART
。像 @T.E.D. 一样,我们在构建的应用程序中也完成了这项任务。我们的应用程序是一个 Windows 服务,因此帮助程序会停止该服务(如果它挂起则最终终止该服务),然后再次启动该服务。