通常,OS X上的应用程序包只能启动一次,但是通过简单地复制捆绑包,可以启动两次相同的应用程序.检测和阻止这种可能性的最佳策略是什么?
在Windows上,这种效果可以通过应用程序在启动时创建命名资源,然后在无法创建命名资源时退出,表明正在运行已创建相同资源的另一个进程来实现.当应用程序退出时,这些资源在Windows上以可靠的方式发布.
我在研究这个问题时遇到的问题是OS X上的API会在文件系统中保持状态,从而使得在Windows上使用的策略不可靠,即在不正确的退出后延迟文件可能会错误地指示应用程序已在运行.
我可以用来在OS X上实现相同效果的API是:posix,carbon和boost.
想法?
在Windows上,通常的做法是创建一个命名的互斥锁,并使用它来确定给定应用程序的实例是否已在运行.这有其缺点,但大多数都有效.
我可以想一想在Mac上做到这一点的方法:
Cocoa/Carbon内置的东西比上面的选项更容易吗?如果没有,那三个中哪一个最常用于mac?我假设2或3 ......