相关疑难解决方法(0)

如何检测OS X应用程序是否已启动

通常,OS X上的应用程序包只能启动一次,但是通过简单地复制捆绑包,可以启动两次相同的应用程序.检测和阻止这种可能性的最佳策略是什么?

在Windows上,这种效果可以通过应用程序在启动时创建命名资源,然后在无法创建命名资源时退出,表明正在运行已创建相同资源的另一个进程来实现.当应用程序退出时,这些资源在Windows上以可靠的方式发布.

我在研究这个问题时遇到的问题是OS X上的API会在文件系统中保持状态,从而使得在Windows上使用的策略不可靠,即在不正确的退出后延迟文件可能会错误地指示应用程序已在运行.

我可以用来在OS X上实现相同效果的API是:posix,carbon和boost.

想法?

macos resources boost macos-carbon launch

20
推荐指数
3
解决办法
8372
查看次数

在Mac上使用单实例应用程序的理想方式

在Windows上,通常的做法是创建一个命名的互斥锁,并使用它来确定给定应用程序的实例是否已在运行.这有其缺点,但大多数都有效.

我可以想一想在Mac上做到这一点的方法:

  1. 命名为pthread互斥体
  2. 枚举正在运行的进程并查找匹配的进程
  3. 创建并锁定文件

Cocoa/Carbon内置的东西比上面的选项更容易吗?如果没有,那三个中哪一个最常用于mac?我假设2或3 ......

macos cocoa mutex

7
推荐指数
2
解决办法
6232
查看次数

标签 统计

macos ×2

boost ×1

cocoa ×1

launch ×1

macos-carbon ×1

mutex ×1

resources ×1