如何避免二进制文件在linux中被多次启动?

MOH*_*MED 2 c linux

我有一个二进制文件,它是一个守护进程,是用 C 语言开发的。我想在程序的开头添加一个检查,以保证该二进制文件仅启动一次。我的二进制文件在 Linux 上运行。

有什么建议么?

jas*_*son 5

常见的方法是将PID 文件放入/var/run. 守护进程成功启动后,将flock其 PID 写入此文件。启动时,您检查该文件中的 PID 值(如果存在)。如果当前没有 PID 正在运行,则应用程序可以安全启动。如果 PID 存在,请检查该 PID 是否是可执行文件的实例。如果不是,也可以安全启动。您应该在退出时删除该文件,但这并不是绝对必要的。

  • 实际上,使用“flock”主要使您无需检查PID是否存在,就好像您的程序在整个运行过程中一直保持锁定一样,它被锁定表明该进程存在。 (2认同)
  • 过时的 pid 文件是邪恶的:pid 会被重用,并且在长时间运行的服务器上,许多系统管理员将承认由于意外终止错误的进程而导致停机!清理不干净并不是世界末日,但不去尝试就很草率了。退出时一定要清理 pidfiles。 (2认同)