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