在 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/