我正在使用C编写程序。我希望有一个互斥锁,可以帮助我运行程序的新实例,以防我的程序的第一个实例丢失或停止工作。
我不知道怎么开始...... 任何帮助都会非常棒。
答案 0 :(得分:0)
如果您使用的是Windows,请使用named mutex制作CreateMutex。运行的第一个实例会创建互斥锁(如果它尚不存在)并将其锁定。其他实例将无法使用WaitForSingleObject获得互斥锁的所有权,并应终止。
在类Unix系统上,通常将第一个实例的PID写入锁定文件。然后,其他实例将检查该文件与当前正在运行的程序。这涉及更多,并且不使用互斥锁。
我似乎误解了你的问题而上面的散文反映了相反的情况:确保一次只运行一个实例。如果挂起或失败,重新启动进程会更复杂。我建议一个程序启动你的应用程序并在外部监视它的健康状况。然后,启动器可以在检测到问题时启动新实例。确切的过程高度依赖于您的平台。
答案 1 :(得分:0)
您创建一个启动程序的小循环。因此,如果程序崩溃,它将重新启动程序。
在linux中,您可以使用简单的bash脚本
执行此操作$ while true; do ./path/my/prog; done
在C中,我猜你会写:
while(1) {
system("./path/my/prog");
}