我正在 WxPython 中开发 GUI 应用程序,我不确定如何确保在任何给定时间机器上只有应用程序的一个副本正在运行。由于应用程序的性质,多次运行没有任何意义,并且很快就会失败。在 Win32 下,我可以简单地创建一个命名互斥体并在启动时检查它。不幸的是,我不知道 Linux 中有任何工具可以做到这一点。
我正在寻找一些在应用程序意外崩溃时会自动释放的东西。我不想因为我崩溃而给我的用户带来必须手动删除锁定文件的负担。
正确的做法是使用建议性锁定flock(LOCK_EX)
;在 Python 中,可以在fcntl module.
与 pidfile 不同,当您的进程因任何原因终止时,这些锁总是会自动释放,不存在与文件删除相关的竞争条件(因为文件不需要被删除来释放锁),并且不同的进程不可能继承 PID,从而看似验证了过时的锁。
如果你想要不干净的关闭检测,你可以在获取锁后将一个标记(例如你的PID,对于传统主义者)写入文件中,然后在干净关闭之前将文件截断为0字节状态(当锁被持有时) );因此,如果未持有锁并且文件非空,则表明不正常关闭。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)