免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11972 | 回复: 11
打印 上一主题 下一主题

[C] 如何做到进程死掉后自动重启? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-19 16:28 |只看该作者 |倒序浏览
现在写了一个服务程序(守护进程)。但是有时会因为一些意外情况挂掉。所以要有一种保护措施,就是确保服务进程挂了以后还能启动起来。


想了些办法,一个是开一个进程监视这个服务进程,一旦发现挂了,自动启动他(有点像病毒~~~~不过绝对不是)但是没有找到查找进程相关函数或者相关文件存放的位置。

二一个就是通过信号,我觉得如果进程刮掉了应该会产生一些信号,如果修改这些信号的默认操作为重新启动进程,哪么进程就可以做到自己救自己,这种方法要比前一个省资源,但是还不知道有没有这样的信号产生呢。所以一会儿看看实在是查不到 查找进程的函数的话就查查这个。

我暂时就想到这些。不知道各位高手是如何做的。希望大家提供一些信息。提前谢谢各位了。

论坛徽章:
0
2 [报告]
发表于 2008-06-19 16:35 |只看该作者
写一个脚本加到cron里每秒检测一次,如果不存在就启动

论坛徽章:
0
3 [报告]
发表于 2008-06-19 16:58 |只看该作者
原帖由 wanjunq 于 2008-6-19 16:35 发表
写一个脚本加到cron里每秒检测一次,如果不存在就启动

这个方法不错啊。但是还要依赖cron啊 最好能尽量少依赖一些东西。

论坛徽章:
0
4 [报告]
发表于 2008-06-19 17:02 |只看该作者
看门狗

论坛徽章:
0
5 [报告]
发表于 2008-06-19 17:02 |只看该作者
fork出来执行你的进程,然后等待SIGCHLD

论坛徽章:
0
6 [报告]
发表于 2008-06-19 17:07 |只看该作者
原帖由 77h2_eleven 于 2008-6-19 17:02 发表
看门狗

有点那个意思。能具体些吗?

论坛徽章:
0
7 [报告]
发表于 2008-06-19 17:15 |只看该作者
原帖由 dpsuffix 于 2008-6-19 17:02 发表
fork出来执行你的进程,然后等待SIGCHLD

谢谢你的信息。刚刚查了一下阿,这个信号是在子进程终止时返回給父进程的,父进程可以截获这个消息,然后执行再启动是吧。不知道我理解的意思对吧。这个信号只要是子进程有异常都会产生这个信号吗 还是只有子进程挂掉的时候

论坛徽章:
0
8 [报告]
发表于 2008-06-19 17:19 |只看该作者
用fork的话,父进程挂了还是会完蛋的,建议还是用cron。

论坛徽章:
0
9 [报告]
发表于 2008-06-19 17:21 |只看该作者
原帖由 Smeagol 于 2008-6-19 17:19 发表
用fork的话,父进程挂了还是会完蛋的,建议还是用cron。

恩 但是创建成守护进程的时候好像要杀掉父进程的。所以按目前的状况,没有父进程啊。

cron那个我还不是很了解,马上去了解去。但是这样就依赖cron了。

就没有再起一个程序负责监控的解决办法 或者更好的办法。有些过服务程序的朋友多提宝贵意见啊

论坛徽章:
0
10 [报告]
发表于 2008-06-19 17:21 |只看该作者
daemontools
What is it?
daemontools is a collection of tools for managing UNIX services.

supervise monitors a service. It starts the service and restarts the service if it dies. Setting up a new service is easy: all supervise needs is a directory with a run script that runs the service.

http://cr.yp.to/daemontools.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP