服务程序崩溃后自动重启可行吗?

jamseyang 2010-03-16 03:01:23
我有一个服务程序,会出现偶然性的崩溃,并且无法重现,找了几天还是没有找出问题所在,我使用SetUnhandledExceptionFilter还捕获异常,做了个Win32控制台下Demo,程序崩溃后可以用WinExc可以重新启动。我想问的是服务程序崩溃后使用system("net start ServiceName")可以启动服务吗?这样可靠吗?
...全文
847 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
bingshanzhu 2011-09-16
  • 打赏
  • 举报
回复
同志们,自动重启程序是很有必要的,你的程序再好,如果出现了硬件运行错误,也有可能崩溃的(虽然几率很小很小,但是也有可能发生的。)
jamseyang 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 zhupf 的回复:]
其实一个程序退出了...理论上其资源也就全部释放了..假如有被其他进程同时使用,那就另当别论.被其他进程暂缓释放也另当别论.

那么,随便哪种方式重启结果都是一样的..

但建议要把问题找出来...兄弟啊...
想方设法找啊...记日志..崩溃的时候不让它退出,记录崩溃代码啥的. minidump那个东西...等等,还有华生医生等等.
[/Quote]
谢谢了,说的很中肯。
我想问下,dmp可以定位到出错的行,但是如何获取上下文变量的当前值呢?我的意思是用VC2005打开dmp文件指向出错的行,我想知道这之前各变量的值,怎么获取呀.
不说害怕 2010-03-17
  • 打赏
  • 举报
回复
其实一个程序退出了...理论上其资源也就全部释放了..假如有被其他进程同时使用,那就另当别论.被其他进程暂缓释放也另当别论.

那么,随便哪种方式重启结果都是一样的..

但建议要把问题找出来...兄弟啊...
想方设法找啊...记日志..崩溃的时候不让它退出,记录崩溃代码啥的. minidump那个东西...等等,还有华生医生等等.
liuxiuk 2010-03-17
  • 打赏
  • 举报
回复
2楼的是个馊主意, hehe
jamseyang 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wizardk 的回复:]
引用 12 楼 wozhaolala 的回复:

引用 7 楼 wizardk 的回复:

程序崩溃不要用重启的方式糊弄
重启不是糊弄,如果软件的工作还得继续


发布前要把好关,如果不查明原因而只是重启解决的话,说不定会造成未知的故障。就像WATCHDOG一样,这是在万不得已的情况下硬复位,但哪个开发者也不会依靠他去解决系统崩溃、软件死锁的问题。
[/Quote]
说的很对!应该先最大努力去查明真相,在万不得已情况下才考虑自动重启。
WizardK 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wozhaolala 的回复:]

引用 7 楼 wizardk 的回复:

程序崩溃不要用重启的方式糊弄
重启不是糊弄,如果软件的工作还得继续
[/Quote]

发布前要把好关,如果不查明原因而只是重启解决的话,说不定会造成未知的故障。就像WATCHDOG一样,这是在万不得已的情况下硬复位,但哪个开发者也不会依靠他去解决系统崩溃、软件死锁的问题。
悟迟 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wizardk 的回复:]

程序崩溃不要用重启的方式糊弄
[/Quote]重启不是糊弄,如果软件的工作还得继续
rendao0563 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wizardk 的回复:]

程序崩溃不要用重启的方式糊弄
[/Quote]

TRY掉. 然后写个log.
zero_226 2010-03-17
  • 打赏
  • 举报
回复
崇拜一个,说的太好了[Quote=引用 7 楼 wizardk 的回复:]
程序崩溃不要用重启的方式糊弄
[/Quote]
jamseyang 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wizardk 的回复:]
程序崩溃不要用重启的方式糊弄
[/Quote]
惭愧呀,我要深刻检讨!
jamseyang 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yekoufeng 的回复:]
三种方法都可以,对于不重现的bug,要详细写日志
[/Quote]
请问详细日志应该怎么写呀,我程序有点复杂.
WizardK 2010-03-16
  • 打赏
  • 举报
回复
程序崩溃不要用重启的方式糊弄
yekoufeng 2010-03-16
  • 打赏
  • 举报
回复
三种方法都可以,对于不重现的bug,要详细写日志
jingzhongrong 2010-03-16
  • 打赏
  • 举报
回复
要用代码实现?

ChangeServiceConfig2(..., SERVICE_CONFIG_FAILURE_ACTIONS ...)

SC_ACTION_RESTART
jamseyang 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangk 的回复:]
直接在服务属性里设置失败重启即可。
[/Quote]
谢谢倒之的回答,可以给几段代码吗?
mcaok 2010-03-16
  • 打赏
  • 举报
回复
可以。
webipstin 2010-03-16
  • 打赏
  • 举报
回复
可以使用进程守护,另一个进程定时查找服务进程是否在启动状态,不在就winexec或createprocess启动服务进程。
wangk 2010-03-16
  • 打赏
  • 举报
回复
直接在服务属性里设置失败重启即可。

15,471

社区成员

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

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