有没有办法在C ++中停止双重执行应用程序,因此只有一个应用程序实例同时运行?
编辑:Windows 7
答案 0 :(得分:3)
在C ++标准中无法做到这一点。您需要的是使用底层平台提供的机制。例如,这是how you would do it on Windows。
Here is how you might do it on Mac OS X。如您所见,这些方法可能有所不同,取决于您的需求。
归结为检查您的应用程序是否正在运行,然后退出。
Here are a few more ways检查您的应用程序是否在Windows上运行(代码使用不同的语言,但概念相同)
答案 1 :(得分:1)
如果您需要跨平台解决方案,可以使用Boost.Interprocess:
#include <iostream>
#include <boost\interprocess\sync\named_mutex.hpp>
int main(int, char **argv) {
using namespace boost::interprocess;
using namespace std;
static const char *unique_name = "xyzzy";
try {
named_mutex justonce(create_only, unique_name);
cout << "running..." << endl;
char c;
cin >> c;
named_mutex::remove(unique_name);
} catch (interprocess_exception) {
cout << "already running..." << endl;
}
}
答案 2 :(得分:-1)
您可以按照Singleton类设计模式来解决您的问题。在任何时候它都会创建一个对象的最大值。