检测Mac OS X中的进程实例
Detecting process instances in Mac OS X
我正在尝试实现一种方法来检测应用程序的另一个实例是否已经启动,并且一直在修补:1.共享内存2.命名互斥3.命名管道
似乎所有这些都有一个缺陷,即如果"主"应用程序崩溃,"IPC"对象将挂起,使应用程序的所有未来实例都认为有另一个实例处于活动状态(直到重新启动)。理想情况下,我希望有一个在进程终止时自动删除的对象,无论是正常情况下还是崩溃时。
想法?
我已经看到通过使用文件和文件锁定来实现这一点。主应用程序检查/tmp中是否存在文件。如果文件当前已锁定,则应用程序已在运行。如果文件不存在或未锁定,则说明该文件未运行。根据操作系统的不同,您需要以原子的方式来避免竞争条件。
这样,如果程序崩溃,操作系统会自动关闭文件。
相关文章:
- 从C++实例化QML
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- boost::进程间消息队列引发错误
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- IPC使用多个管道和分支进程来运行Python程序
- 从 c++ 中的实例化进程获取输出的可靠方法是什么?
- 类的实例是否仍在同一进程内的线程之间共享相同的静态成员
- C++中同一进程中静态类的多个实例
- 使用 c++/WinAPI 计算 Windows 上运行的进程实例的可靠方法
- 检测Mac OS X中的进程实例
- 获取当前进程中的所有JavaVM*实例
- 同一实例的停靠图标两次,非 GUI 进程错误地标记"not responding"
- 隔离和多次实例化进程中的C库