c++中是否有跨平台的解决方案来创建一个独特的进程?

Is there a cross-platform solution in C++ for creating an unique process?

本文关键字:一个 进程 创建 是否 跨平台 解决方案 c++      更新时间:2023-10-16

我需要使我的程序在几个平台上只有一个进程。我知道它可以用互斥锁在Windows上解决,但我不知道其他平台如Linux是如何解决的。互斥锁不是c++ 03标准的一部分,尽管它在c++ 0x标准中。在编译器很好地支持c++ 0x之前,我必须等待很长时间。boost的互斥锁可以用于此吗?

提前感谢:)

std::mutex和boost::mutex都没有暴露Win32互斥锁的功能,即系统全局命名互斥锁,所以不,你不能使用它们中的任何一个。

最简单和最可移植的方法可能是简单地创建一个锁文件(您可以向它写入一个PID,然后检查进程是否仍然存在,以避免在异常终止后将程序锁定)。不过,您可能仍然需要一些特定于平台的粘合代码。

看看boost的进程间库:http://www.boost.org/doc/libs/1_47_0/doc/html/interprocess.html
我使用了一个named_mutex http://www.boost.org/doc/libs/1_47_0/doc/html/boost/interprocess/named_mutex.html来确保我的程序只有一个实例在运行。

我不相信这可以通过boost::互斥锁来完成,但是您可能可以使用boost进程间库来实现所需的效果。