gpt4 book ai didi

python - 确保 Linux 中应用程序的单个实例

转载 作者:IT老高 更新时间:2023-10-28 12:39:55 27 4
gpt4 key购买 nike

我正在使用 WxPython 开发一个 GUI 应用程序,但我不确定如何确保在任何给定时间在机器上只运行我的应用程序的一个副本。由于应用程序的性质,多次运行没有任何意义,并且会很快失败。在 Win32 下,我可以简单地创建一个命名互斥体并在启动时检查它。不幸的是,我不知道 Linux 中有任何工具可以做到这一点。

我正在寻找应用程序意外崩溃时会自动释放的东西。我不想让我的用户因为崩溃而不得不手动删除锁定文件。

最佳答案

正确的做法是使用 flock(LOCK_EX) 的建议性锁定;在 Python 中,可以在 fcntl module 中找到。 .

与 pidfiles 不同,这些锁总是在您的进程因任何原因死亡时自动释放,不存在与文件删除相关的竞争条件(因为文件不需要被删除以释放锁),并且其他进程不可能继承 PID 并因此似乎验证过时的锁。

如果你想检测非干净关机,你可以在获取锁后在文件中写入一个标记(例如你的PID,对于传统主义者),然后在干净关机之前将文件截断为0字节状态(而锁正在举行);因此,如果未持有锁且文件非空,则指示不正常关闭。

关于python - 确保 Linux 中应用程序的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/220525/

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