检测应用程序C++的双重执行
Detect double execution of app C++
有什么方法可以停止C++中应用程序的双重执行,从而一次只运行一个应用程序实例吗?
编辑:Windows 7
在C++标准中没有办法做到这一点。您需要的是使用底层平台提供的机制。例如,以下是您在Windows上的操作方法。
下面是你在Mac OS X上的操作方法。正如你所看到的,方法可能会有所不同,这取决于你想要什么。
它可以归结为检查您的应用程序是否正在运行,然后如果正在运行则退出。
以下是检查应用程序是否在Windows上运行的更多方法(代码使用不同的语言,但概念相同)
如果您需要跨平台解决方案,可以使用Boost.Interprocess:
#include <iostream>
#include <boostinterprocesssyncnamed_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;
}
}
您可以按照Singelton类的设计模式来解决您的问题。在任何时候,它都将创建最多一个对象。
相关文章:
- 按下Arduino按钮后,如何在C#应用程序上执行操作
- 计算有多少人执行我的C++应用程序
- 从Qt应用程序执行MSI文件
- 我在哪里编写在退出 C++ 窗口窗体应用程序之前执行的代码部分
- 应用程序执行器 vs lpsz用户名 ADsOpenObject.
- 执行递归函数时 C++ 应用程序崩溃
- 程序'main.exe'运行失败:指定的可执行文件不是此操作系统平台的有效应用程序
- 有没有办法在C++应用程序的多次执行中保存值?
- 应用程序在 C++ QT 上执行 sql 后崩溃
- 在 Ubuntu 16.04 的 usr/local/bin 中安装的 c++ 应用程序在从主目录执行时无法正常运行
- 如何分离以C++执行的 Java 应用程序的 stdin/stout/stderr 流
- 有什么理由更喜欢从 IDE 中运行应用程序而不是运行独立的可执行文件?
- 该代码注入第三方Qt应用程序并执行一些方法来获取Qt应用程序信息
- 在 Ubuntu 上运行的节点服务器需要执行 C# 应用程序 - 如何执行
- 我的应用程序是从Visual Studio内部运行还是通过执行EXE文件运行
- 使用可执行应用程序创建和"Scheduling" pthreads
- 是否可以从外部进程注入和执行应用程序
- 如何在不冻结应用程序 1 的情况下从另一个应用程序 1 执行应用程序 2
- CreateProcessAsUser未从Non-Sys32目录执行应用程序
- 执行 c++ 应用程序时获取错误"child exited with value 255"