【发布时间】:2010-11-22 21:38:58
【问题描述】:
我只想要系统中我的程序的一份副本。如何从 C 代码中查找系统中的另一个副本?我想要这样的东西
# program &
[1] 12586
# program &
Program is already running
我的最佳想法是制作 .lock 文件。但我没有找到任何关于他们的准则。
谢谢。
【问题讨论】:
-
听起来你想把你的程序作为一个守护进程运行
-
它不是守护进程,而是类似的东西。问题是同时复制两个副本会导致数据崩溃。
-
锁文件解决方案很好 - 套接字解决方案的意图相似。给您一个大问题:为什么如果有两个副本正在运行,您的程序会崩溃?如果我想在我的数据上运行一份副本,而 Fred 想在他的数据上运行一份副本呢?没有标准的内置机制,因为它并不像人们想的那样经常需要。
-
补充 Jonathan Leffler 的评论,关键资源是数据,而不是程序。在数据上使用锁定文件,而不是在程序上。