windows如何让服务实现自动重启?

我有一个跨平台的C语言程序,现在要做这个程序的自动重启功能。在LinuxAIX下我可以调用execv函数结束当前进程并启动一个新的进程。但是在Windows上遇到了困难。
Windows上,由于这个程序是要长时间运行的,所以使用CreateService函数注册成了服务。我尝试过很多方法,比如设置服务异常退出时自动拉起,然后让程序exit(-1), 这样看日志程序确实自动启动了,但是进程的pid并没有发生变化。
还尝试过做一个restart.cmd的脚本,在这里杀死当前进程并重新启动,也失败了。还尝试过使用定时任务的方式,但都没有奏效。
因此想问问有没有什么比较好的解决方案?一些主流的Windows程序在线升级的时候是如何做到自动重启的?

阅读 2.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进