我一直在寻找如何保证我的应用程序只有一个实例可以在 Linux 上运行。我认为提供的“最佳”建议是打开一个文件,然后尝试锁定它。但也可以通过打开一个命名的 POSIX 信号量并请求独占访问来做到这一点。对于我 Windows 上瘾的大脑来说,这似乎是更好的方法。有人可以解释这种方法的缺点以及为什么文件锁定是可取的吗?
问问题
707 次
1 回答
3
从您发布的kernel.org页面:
Persistence
POSIX named semaphores have kernel persistence: if not removed by
sem_unlink(3), a semaphore will exist until the system is shut down.
如果您的进程在显式调用之前死掉sem_unlink()
,您将无法再次打开您的应用程序,直到您重新启动。
但是,如果您使用文件锁,它们将在您的进程因任何原因结束时被释放(如您还链接的SO 问题中所述)
于 2013-01-16T19:30:58.913 回答