【发布时间】:2010-10-15 15:44:14
【问题描述】:
通常,OS X 上的应用程序包只能启动一次,但是通过简单地复制包,相同的应用程序可以启动两次。检测和阻止这种可能性的最佳策略是什么?
在 Windows 上,此效果可以简单地通过应用程序在启动时创建命名资源然后在无法创建命名资源时退出来实现,这表明正在运行的另一个进程已经创建了相同的资源。当应用程序退出时,这些资源会在 Windows 上以可靠的方式释放。
我在研究这个问题时看到的问题是 OS X 上的 API 在文件系统中保持状态,从而使 Windows 上使用的策略不可靠,即在不正确退出后延迟文件可能错误地表明应用程序已经在运行.
我可以用来在 OS X 上实现相同效果的 API 是:posix、carbon 和 boost。
想法?
【问题讨论】:
-
你为什么还要这样做?与 Windows 不同,操作系统负责防止应用程序的多个实例在常见情况下运行。在不常见的情况下,为什么要阻止它?
-
有问题的应用程序是一个游戏。通过在一台机器上运行多个游戏副本,玩家在某些情况下会比其他玩家拥有不公平的优势。
标签: macos boost resources macos-carbon launch