草庐IT

hMutexOneInstance

全部标签

c++ - 如何阻止运行同一程序的两个实例?

我需要确保用户一次只能运行我的程序的一个实例。这意味着,我必须以编程方式检查同一个程序是否已经在运行,并在这种情况下退出。我想到的第一件事是在程序启动时在某个地方创建一个文件。然后,程序的每个其他实例都会检查这个文件,如果找到就退出。问题是,程序必须始终正常退出并能够删除它创建的文件,才能正常工作。万一停电,锁定文件仍然存在,程序无法再次启动。为了解决这个问题,我决定将第一个程序的进程ID存储到锁定文件中,当另一个实例启动时,它会检查文件中的PID是否附加到某个正在运行的进程。如果文件不存在、为空或PID不对应任何现有进程,则程序继续运行并将自己的PID写入文件。这似乎工作得很好——即

c++ - 如何阻止运行同一程序的两个实例?

我需要确保用户一次只能运行我的程序的一个实例。这意味着,我必须以编程方式检查同一个程序是否已经在运行,并在这种情况下退出。我想到的第一件事是在程序启动时在某个地方创建一个文件。然后,程序的每个其他实例都会检查这个文件,如果找到就退出。问题是,程序必须始终正常退出并能够删除它创建的文件,才能正常工作。万一停电,锁定文件仍然存在,程序无法再次启动。为了解决这个问题,我决定将第一个程序的进程ID存储到锁定文件中,当另一个实例启动时,它会检查文件中的PID是否附加到某个正在运行的进程。如果文件不存在、为空或PID不对应任何现有进程,则程序继续运行并将自己的PID写入文件。这似乎工作得很好——即