gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:02:27 25 4
gpt4 key购买 nike

通常,OS X上的应用程序 bundle 包只能启动一次,但是,只要复制 bundle 包,同一应用程序就可以启动两次。检测并阻止这种可能性的最佳策略是什么?

在Windows上,可以简单地通过应用程序在启动时创建命名资源来实现此效果,如果无法创建命名资源,则退出,这表明正在运行的另一个进程已经创建了相同资源。当应用程序退出时,这些资源将以可靠的方式在Windows上释放。

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

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

有想法吗?

最佳答案

一个底层解决方案是使用flock()。

每个实例将在启动时尝试锁定文件,如果锁定失败,则说明另一个实例已在运行。程序退出时会自动释放群,因此不必担心过时的锁定。

请注意,无论选择哪种解决方案,都需要对“多个实例”的含义做出有意识的决定。具体来说,如果多个用户同时运行您的应用程序,可以吗?

关于macos - 如何检测OS X应用程序是否已经启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/684911/

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