gpt4 book ai didi

objective-c - 只允许一个程序运行一个实例

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:28 25 4
gpt4 key购买 nike

如何限制我的程序只运行实例?目前我正在运行我的程序作为守护进程(自动启动和停止),当用户点击并尝试再次启动(这不是一个有效的用例)时,进程在用户上下文中启动,我想避免这种情况有很多原因.

我怎样才能做到这一点?

截至目前,我正在获取进程列表并进行一些检查并在开始时退出,但这种方法并不干净,尽管它解决了我的问题。

谁能给我一个更好的解决方案?我正在使用 ps 来获取进程列表,是否有任何可靠的 API 来完成这项工作?

最佳答案

使用计数为 1 的命名信号量。启动时,检查是否使用了该信号量。如果是,请退出。否则,接受它。

概念验证代码:(放在应用程序入口点附近的某个地方)

#include <semaphore.h>
...
if (sem_open(<UUID string for my app>, O_CREAT, 600, 1) == SEM_FAILED) {
exit(0);
}

来自sem_open documentation ,

The returned semaphore descriptor is available to the calling process until it is closed with sem_close(), or until the caller exits or execs.

关于objective-c - 只允许一个程序运行一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12295561/

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