在编写便携式应用程序时,应该在哪里创建PID /锁定文件

时间:2011-05-11 07:52:09

标签: windows linux macos file

我正在修改我编写的应用程序,以防止多个实例同时运行。

我的第一个想法是(根据the Linux FHS)简单地将PID文件存储在/var/run中。通过这种方式,我可以检查PID文件是否存在,如果出现则退出并显示错误。

现在,如果我希望我的应用程序可移植,我必须考虑每个系统(f.ex.Windows)上都不存在/var/run

在这种情况下,最佳做法是什么?

注意:它不一定是PID文件。一个0字节的“锁定”文件也可以解决这个问题。 PID文件的优点是还可以为需要调查问题的人提供PID。

澄清:该应用程序是一个备份脚本,通常由定义良好的用户运行。

2 个答案:

答案 0 :(得分:1)

其中一种方法是让您的应用程序依赖于移植框架(如Qt)。这样的框架提供了平台的抽象,允许您始终放在“正确的位置”(例如,对于Windows,它在XP,Vista / 7之间变化)。例如,您可以查看QSettings 如果您不能依赖框架,那么挖掘他们的代码可能会提供高级答案。

答案 1 :(得分:0)

IPC对象怎么样? IPC对象是系统范围的,对吧?假设我们有一个名为“pp1232fafdsafd”的IPC对象,第二次打开它时,linux会将errno设置为EEXIST。我们可以检查errno以防止多个实例运行。


hittlle@hotmail.com