C++ C+中是否有跨平台的解决方案+;用于创建独特的流程?

C++ C+中是否有跨平台的解决方案+;用于创建独特的流程?,c++,cross-platform,C++,Cross Platform,我需要使我的程序在几个平台上只有一个进程。我知道在Windows上使用互斥可以解决这个问题,但我不知道其他平台如Linux是如何解决的。Mutex虽然不是C++ 03标准,但它不是C++标准的一部分。在编译器支持C++ 0x之前,我必须等待很长时间。boost的互斥可以用于此目的吗 提前感谢:)无论是std::mutex还是boost::mutex都没有公开实现此功能所需的Win32互斥体的功能,即系统全局命名互斥体,因此不,您不能使用它们中的任何一个 最简单、最可移植的方法可能是简单地创建一个

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


提前感谢:)

无论是std::mutex还是boost::mutex都没有公开实现此功能所需的Win32互斥体的功能,即系统全局命名互斥体,因此不,您不能使用它们中的任何一个


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

我不相信使用boost::mutex可以做到这一点,但您可能可以使用实现所需的效果。

看看boost的进程间库:

我使用了一个命名的互斥体来确保我的程序只运行了一个实例。

互斥体用于线程,而不是进程请澄清:你的意思是,如果用户多次尝试执行你的应用程序,将只有一个进程?@yi_H Windows互斥体可以跨进程。@yi_H,这并不完全或普遍正确。至少在Windows上,进程之间可以共享互斥对象(指的是实际的内核对象,而不是一些包装的抽象)。您是说一次只运行一个程序实例吗,或者在程序中有一个独特的进程,或者是程序的多个版本同时运行?我在C++中没有什么经验,但是,也不可能打开一个约定的高端口吗?它的优点是在应用程序因任何原因退出时保证清理,并且能够在必要时与其他实例通信。@Cat Plus,我认为创建锁文件不是一个好主意。在这种情况下,我必须考虑如何处理有关文件的异常。这是一个沉重的负担。但还是要谢谢你:)