免费注册 查看新帖 |

Chinaunix

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

怎样让一个程序中写代码让自己重启? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-12 20:54 |只看该作者 |倒序浏览
如题,请问有没有办法在程序中写代码让这个程序自身重启一下? 谢谢了.

论坛徽章:
0
2 [报告]
发表于 2006-12-13 15:30 |只看该作者

回复 1楼 nj_zhangchuntao 的帖子

最简单的方法:
----------------------------
int main(int argc, char *argv[]) {
      ...
    if (出错需要重启动) {
            system(argv[0]);
            return 1;
      }
      ...
  }
----------------------------

但是注意加一些条件,来限制重启动次数;否则当错误一直存在的话,程序会不停地重启动。

论坛徽章:
0
3 [报告]
发表于 2006-12-13 15:58 |只看该作者
谢谢楼上的, 请问还有其他方法么?

论坛徽章:
0
4 [报告]
发表于 2006-12-14 15:07 |只看该作者
#!/bin/sh
while (true) do myapp; done&
你的程序不要在后台跑. 让 shell 到后台执行它

论坛徽章:
0
5 [报告]
发表于 2006-12-20 13:31 |只看该作者
楼上那个system的方法就不错啊用fork也可以啊.
我以前用过另外一种方法是:
有两个程序A,B. B是真正的程序,A的只是B的shell,负责启动B.
运行的时候,直接运行A,A再启动B.如果B要重启动,通知A,由A来干这事.
一些windows下的程序的自升级就是这样干的.

论坛徽章:
0
6 [报告]
发表于 2006-12-21 15:03 |只看该作者

回复 1楼 nj_zhangchuntao 的帖子

可以用shell写一个监控程序,来监控该进程的状况
如果该进程退出了,重启该进程。

论坛徽章:
0
7 [报告]
发表于 2006-12-24 14:33 |只看该作者
写个shell来监视程序

论坛徽章:
0
8 [报告]
发表于 2006-12-26 16:18 |只看该作者
这个应该是看你的需求了

如果你的需求是说需要重置程序中的一些东西,完全可以开一个port来listen,然后用另外一个程序来连这个port并发一些你约定好的命令来实现reload

如果你是需要监控程序,希望它退出以后可以重新启动,完全可以通过shell在做一个monitor,没有必要在程序内部自身实现
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP