c++ - 如果应用程序在启动新实例之前已经在运行,如何在 C++ 中检查?

标签 c++ windows

我找到了一些关于实现的引用,但只有 C++ 中的一个清晰描述(Joseph Newcomers 文章 http://www.flounder.com/nomultiples.htm#CreateMutex ),但那是 (c)1999,所以我有点不愿意在没有先检查是否有“今天更新/更好的方式。

谢谢

最佳答案

任何命名对象都可以,可以是文件、互斥锁、事件、邮槽、TCP 端口等。ERROR_ALREADY_EXISTS 告诉您实例是否已经存在。

对于 Win32 内核命名空间中的对象,自 1999 年以来有一个变化 -- 由于终端服务,您现在可以使用 Global\Local\ 前缀指定它是整台计算机上的一个实例还是每个用户登录 session 一个实例。

如果您想要更便携的东西,那么绑定(bind)一个 TCP 端口,或者创建一个文件并独占锁定它,往往可以在各种操作系统上很好地工作。

关于c++ - 如果应用程序在启动新实例之前已经在运行,如何在 C++ 中检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6712432/

相关文章:

python - 嵌入 Python Zip 文件会抛出错误?

c++ - 使用 vector<char> 实现串行缓冲区的最佳方法是什么?

c++ - std::stringstream 不读取空格

windows - Docker-compose 无效绑定(bind)安装规范 "/rootfs:ro": invalid volume specification

c++ - gcc 4.7 出现 super 奇怪的段错误——错误?

Windows 上的 MySQL : Using SHA-2

windows - 编辑 PASCAL VOC 边界框数据

c++ - tr1::unique_ptr 和 SelectObject()

c# - 为小型实用程序启用基本日志记录的建议

c++ - boost scoped_lock 返回行为