Windows程序相同程序实现运行互斥

方法

使用Windows的互斥体Mutex可以实现程序的运行互斥,原理为使用为进程建立一个仅为该进程所拥有的互斥体,这个互斥体可以被其他程序检测到,但不可以被其他程序获取,在持有Mutex互斥体的程序退出后(包括被结束进程后)该Mutex互斥体自动被释放。

实现

使用互斥体Mutex需要引入Windows.h头文件。

c++ 复制代码
#include <windows.h>

int main() {

    // 创建互斥体,其中第二个变量为TRUE表示该互斥体为该程序所拥有,第三个变量是互斥体的名字
    HANDLE hMutex = CreateMutex(NULL, TRUE, "MyMutexApplication");

    // 检查互斥体是否已经存在,如果存在则表示已经有程序持有名为"MyMutexApplication"的互斥体,即已经有相同程序运行
    if (GetLastError() == ERROR_ALREADY_EXISTS) {
        // 关闭互斥体句柄并退出程序
        CloseHandle(hMutex);
        return 0;
    }
	
	//如果没有出现错误,则表示互斥体未创建,相同程序没有运行

	//执行程序逻辑 ...
	
    // 关闭互斥体句柄
    CloseHandle(hMutex);

    return 0;
}
相关推荐
hmcjn(小何同学)1 天前
轻松Linux-9.进程间通信
linux·运维·服务器·c++·bash
落羽的落羽1 天前
【C++】C++11的包装器:function与bind简介
c++·学习
打不了嗝 ᥬ᭄1 天前
【Linux】线程概念与控制
linux·c++
cpsvps_net1 天前
Windows远程FX编解码优化
windows
UnnamedOrange1 天前
ROS1 配置代码覆盖率
c++·cmake
沐怡旸1 天前
【底层机制】std::unordered_map 扩容机制
c++·面试
沐怡旸1 天前
【底层机制】auto 关键字的底层实现机制
c++·面试
华溢澄1 天前
macOS下基于Qt/C++的OpenGL开发环境的搭建
c++·qt·macos·opengl
dragoooon341 天前
[优选算法专题二滑动窗口——串联所有单词的子串]
数据结构·c++·学习·算法·leetcode·学习方法
刃神太酷啦1 天前
C++ 异常处理机制:从基础到实践的全面解析----《Hello C++ Wrold!》(20)--(C/C++)
java·c语言·开发语言·c++·qt·算法·leetcode