gpt4 book ai didi

c++ - 在 Mac OS X 中检测进程实例

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:36 24 4
gpt4 key购买 nike

我正在尝试实现一种方法来检测应用程序的另一个实例是否已经启动,并且一直在修补:1.共享内存2.命名互斥量3. 命名管道

似乎所有这些都有一个缺陷,如果“主”应用程序崩溃,“IPC”对象将被挂起,使应用程序的所有 future 实例都认为有另一个实例处于事件状态(直到重新启动)。理想情况下,我希望有一个对象在进程终止时自动删除,无论是正常终止还是崩溃。

想法?

最佳答案

我已经看到这是通过使用文件和文件锁定来完成的。主应用程序检查/tmp 中是否存在文件。如果文件当前已锁定,则应用程序已在运行。如果该文件不存在或未锁定,则它不会运行。根据操作系统的不同,您需要以原子方式执行此操作以避免竞争条件。

这样,如果程序崩溃,操作系统会自动关闭文件。

关于c++ - 在 Mac OS X 中检测进程实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8820726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com