互斥定义和在C中的使用

时间:2011-04-19 12:00:29

标签: c mutex

我正在使用C编写程序。我希望有一个互斥锁,可以帮助我运行程序的新实例,以防我的程序的第一个实例丢失或停止工作。

我不知道怎么开始...... 任何帮助都会非常棒。

2 个答案:

答案 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");
}