我找到了一些关于实现的引用,但只有 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/