如何让异常的程序退出重启

loyoo2540598 2013-11-18 09:28:35
自己写了一个服务器程序,因为时间很短,没有测试很严格,投入使用之后,怕不稳定。所以写了一个守护程序,当异常时候,重启该服务器程序。现在的问题是,服务器程序出现异常时候,是出现,“内存不能为write”"内存不能为read"等,需要点击确定,或者取消,才能退出。守护程序才能监控到退出,然后重启。
有什么办法能让服务器程序异常之后,直接退出啊。急急急。高手指点。
...全文
275 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ginie 2013-11-29
  • 打赏
  • 举报
回复
用守护程序就行了啊,以前很多软件都会加守护程序的,守护的效果各有千秋,有的直接让你不能中断主线程,必须要先挂了守护程序才能中断,有的就是你这种,检测一旦主的挂了或者异常,守护强制杀了再重启,有些木马程序守护程序还分主次,2 3个守护的,杀守护的还要按顺序来搞,比较讨厌
yaozhiyong110 2013-11-29
  • 打赏
  • 举报
回复
引用 7 楼 loyoo2540598 的回复:
[quote=引用 6 楼 yaozhiyong110 的回复:] [quote=引用 5 楼 loyoo2540598 的回复:] [quote=引用 3 楼 yaozhiyong110 的回复:] [quote=引用 2 楼 loyoo2540598 的回复:] [quote=引用 1 楼 yaozhiyong110 的回复:] 主程序定时发消息给守护程序 发现主程序挂了 守护程序直接杀进程 再重启
这个方法挺变态的。呵呵。这也涉及到进程通信之类的吧。[/quote] 是啊 网上一搜大把的例子啊 你可以用管道 邮槽等等 只维护一个计数 主程序定时更新 守护进程发现这个计数很久没更新了就知道主程序挂了 或者你用socket通信都可以...[/quote] 好像这个方法不是很可行,如果服务器是多线程程序,其中一个线程崩溃了,其他线程可以正常工作。和守护程序通讯的线程,如果正常工作了,则会出现守护失败。[/quote] 你要维护的线程负责去更新啊 你有4个线程要维护 你可以用4个计数啊 每个线程维护自己的计数 守护线程负责胡观察这4个计数是否正常 哪个不正常说明哪个线程异常了撒...[/quote] 服务器的线程是根据连接数来动态创建的,如果守护程序要监控所有线程是否正常,好像有点复杂。我只是想简单写个守护程序。[/quote] 你既然要确保每个线程都不能异常 那就要去监控到每个线程...
loyoo2540598 2013-11-29
  • 打赏
  • 举报
回复
引用 6 楼 yaozhiyong110 的回复:
[quote=引用 5 楼 loyoo2540598 的回复:] [quote=引用 3 楼 yaozhiyong110 的回复:] [quote=引用 2 楼 loyoo2540598 的回复:] [quote=引用 1 楼 yaozhiyong110 的回复:] 主程序定时发消息给守护程序 发现主程序挂了 守护程序直接杀进程 再重启
这个方法挺变态的。呵呵。这也涉及到进程通信之类的吧。[/quote] 是啊 网上一搜大把的例子啊 你可以用管道 邮槽等等 只维护一个计数 主程序定时更新 守护进程发现这个计数很久没更新了就知道主程序挂了 或者你用socket通信都可以...[/quote] 好像这个方法不是很可行,如果服务器是多线程程序,其中一个线程崩溃了,其他线程可以正常工作。和守护程序通讯的线程,如果正常工作了,则会出现守护失败。[/quote] 你要维护的线程负责去更新啊 你有4个线程要维护 你可以用4个计数啊 每个线程维护自己的计数 守护线程负责胡观察这4个计数是否正常 哪个不正常说明哪个线程异常了撒...[/quote] 服务器的线程是根据连接数来动态创建的,如果守护程序要监控所有线程是否正常,好像有点复杂。我只是想简单写个守护程序。
yaozhiyong110 2013-11-29
  • 打赏
  • 举报
回复
引用 5 楼 loyoo2540598 的回复:
[quote=引用 3 楼 yaozhiyong110 的回复:] [quote=引用 2 楼 loyoo2540598 的回复:] [quote=引用 1 楼 yaozhiyong110 的回复:] 主程序定时发消息给守护程序 发现主程序挂了 守护程序直接杀进程 再重启
这个方法挺变态的。呵呵。这也涉及到进程通信之类的吧。[/quote] 是啊 网上一搜大把的例子啊 你可以用管道 邮槽等等 只维护一个计数 主程序定时更新 守护进程发现这个计数很久没更新了就知道主程序挂了 或者你用socket通信都可以...[/quote] 好像这个方法不是很可行,如果服务器是多线程程序,其中一个线程崩溃了,其他线程可以正常工作。和守护程序通讯的线程,如果正常工作了,则会出现守护失败。[/quote] 你要维护的线程负责去更新啊 你有4个线程要维护 你可以用4个计数啊 每个线程维护自己的计数 守护线程负责胡观察这4个计数是否正常 哪个不正常说明哪个线程异常了撒...
loyoo2540598 2013-11-29
  • 打赏
  • 举报
回复
引用 3 楼 yaozhiyong110 的回复:
[quote=引用 2 楼 loyoo2540598 的回复:] [quote=引用 1 楼 yaozhiyong110 的回复:] 主程序定时发消息给守护程序 发现主程序挂了 守护程序直接杀进程 再重启
这个方法挺变态的。呵呵。这也涉及到进程通信之类的吧。[/quote] 是啊 网上一搜大把的例子啊 你可以用管道 邮槽等等 只维护一个计数 主程序定时更新 守护进程发现这个计数很久没更新了就知道主程序挂了 或者你用socket通信都可以...[/quote] 好像这个方法不是很可行,如果服务器是多线程程序,其中一个线程崩溃了,其他线程可以正常工作。和守护程序通讯的线程,如果正常工作了,则会出现守护失败。
wangk 2013-11-18
  • 打赏
  • 举报
回复
最简单应该是设置顶层异常处理SetUnhandledExceptionFilter 在异常处理里写CrashDump,然后重启服务器。
yaozhiyong110 2013-11-18
  • 打赏
  • 举报
回复
引用 2 楼 loyoo2540598 的回复:
[quote=引用 1 楼 yaozhiyong110 的回复:] 主程序定时发消息给守护程序 发现主程序挂了 守护程序直接杀进程 再重启
这个方法挺变态的。呵呵。这也涉及到进程通信之类的吧。[/quote] 是啊 网上一搜大把的例子啊 你可以用管道 邮槽等等 只维护一个计数 主程序定时更新 守护进程发现这个计数很久没更新了就知道主程序挂了 或者你用socket通信都可以...
loyoo2540598 2013-11-18
  • 打赏
  • 举报
回复
引用 1 楼 yaozhiyong110 的回复:
主程序定时发消息给守护程序 发现主程序挂了 守护程序直接杀进程 再重启
这个方法挺变态的。呵呵。这也涉及到进程通信之类的吧。
yaozhiyong110 2013-11-18
  • 打赏
  • 举报
回复
主程序定时发消息给守护程序 发现主程序挂了 守护程序直接杀进程 再重启

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧