本文介绍了重新启动未处理异常的应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



如下:


  1. 抛出一个未处理的异常。

  2. 释放由进程分配的所有资源。

  3. 重新开始并调用main。 >

我希望这个行为适用于我正在开发的服务器应用程序。如果客户端错过使用服务器,可以得到一个std :: bac_alloc异常,在这种情况下,我希望服务器只需重新​​启动,而不是崩溃并关闭,从而避免手动启动。

解决方案

我以前在Windows中完成了这个操作,方法是从另一个程序通过win32 调用。然后其他程序等待监视进程退出,并再次调用其 CreateProcess()。您可以通过在进程'上执行等待进程退出句柄,您可以从 CreateProcess()调用中返回值之一。



您当然会想要以某种方式进行编程,使监控过程自动关闭,其子进程将关闭。


Is it possible to have a program restart automatically if it crashes?

Something like:

  1. An unhandled exception is thrown.
  2. Release all resources allocated by process.
  3. Start over and call main.

I would like this behavior for a server application I'm working on. If clients miss use the server it can get a std::bac_alloc exception, in which case I would like the server to simply restart instead of crashing and shutting down, thus avoiding manual startup.

解决方案

I've done this before in Windows by running said program from another program via a win32 CreateProcess call. The other program then waits on the "monitored" process to exit, and calls its CreateProcess() again if it does. You wait for a process to exit by performing a WaitForSingleObject on the process' handle, which you get as one of the return values from your CreateProcess() call.

You will of course want to program in some way to make the monitoring process shut itself and its child process down.

这篇关于重新启动未处理异常的应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-18 09:08