一尘不染

在Linux上防止多个流程实例

linux

在Linux平台上,用于进程(C ++应用程序)检查其实例尚未运行的最佳方法是什么?


阅读 190

收藏
2020-06-03

共1个答案

一尘不染

执行此操作的标准方法是在某个地方创建一个pidfile,通常包含程序的pid。

您无需将pid放在其中,只需在其上放置排他锁即可。如果您打开它进行读/写并使用LOCK_EX
LOCK_NB,如果文件已被锁定,它将失败。这是无竞争条件的,如果程序崩溃,该锁将自动释放。

通常,您希望按用户进行操作,因此用户的主目录是放置文件的好地方。

如果是守护程序,则最好使用/ var / run之类的地方。

2020-06-03