在Linux平台上,用于进程(C ++应用程序)检查其实例尚未运行的最佳方法是什么?
执行此操作的标准方法是在某个地方创建一个pidfile,通常包含程序的pid。
您无需将pid放在其中,只需在其上放置排他锁即可。如果您打开它进行读/写并使用LOCK_EX LOCK_NB,如果文件已被锁定,它将失败。这是无竞争条件的,如果程序崩溃,该锁将自动释放。
通常,您希望按用户进行操作,因此用户的主目录是放置文件的好地方。
如果是守护程序,则最好使用/ var / run之类的地方。