c++ - 应用程序的一个实例,平台无关,C++11

标签 c++ c++11 boost

在 C++11 中是否有一种独立于平台的方法(可以使用 boost )来确保一次只启动一个应用程序实例? (我不希望使用“文件和 (f)lock”方法运行,因为它需要特定于平台的代码,但如果没有更好的方法,我会这样做。)

在我的场景中,没有(简单的)其他方式,如不可用端口,我可以将其用作标准。是的,我知道 DOS 问题 - 因此无需指出这些问题。

我发现以下类似问题提示 solution与 boost 。 该解决方案有两个问题:

  • 轻微:似乎缺少对 shared_memory_object::remove("shared_memory"); 的调用(在“比赛获胜”的情况下)。但是我对 boost::interprocess 不是很熟悉,所以也许我错了?!
  • 主要:如果程序崩溃共享内存仍然存在,因此程序的下一个实例将无法启动。

我也找到了这个question .那里没有让我兴奋的答案。但这是一个 C++98 问题,所以现在可能使用 C++11 或 boost 有一种新的/不同的方法?

最佳答案

关于c++ - 应用程序的一个实例,平台无关,C++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25864725/

相关文章:

c++ - 在 win32 c++ 中,有没有办法判断 DLL 是否为 64 位?

c++ - 指针容器与对象容器 - 性能

c++ - 事件调度器的设计

c++ - 使用 cpp-netlib 的异步客户端响应?

c++ - 处理类和类的模板函数*

c++ - 如何从 UserMode C++ 获取 ZwQuerySystemInformation 的地址

c++ - 我可以用 constexpr 函数声明一个静态数组吗

c++ - 使用模板元编程 [C++11] 对整数列表进行操作

c++ - 如何传入 std::shared_ptr 但执行 "pass by reference"作业?

c++ - 链接 boost 日志时出现链接器错误(对 boost::log::v2_mt_posix::sinks 的 undefined reference )