一尘不染

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

linux

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

我正在寻找可以在应用程序意外崩溃时自动释放的内容。我不想因为我崩溃而不得不手动删除锁定文件而使用户负担沉重。


阅读 251

收藏
2020-06-02

共1个答案

一尘不染

有几种常见的技术,包括使用信号量。我看到的最常用的文件是在启动时创建一个“
pid锁定文件”,其中包含正在运行的进程的pid。如果程序启动时文件已经存在,请打开它并抓住其中的pid,检查是否正在运行具有该pid的进程,如果正在检查/
proc / pid中 的cmdline值,则查看它是否为程序实例,如果已退出,则用pid覆盖文件。pid文件的常用名称是
application_name.pid

2020-06-02