c++中是否有跨平台的解决方案来创建一个独特的进程?
Is there a cross-platform solution in C++ for creating an unique process?
我需要使我的程序在几个平台上只有一个进程。我知道它可以用互斥锁在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进程间库来实现所需的效果。
相关文章:
- 如何在C++中将函数发送到另一个进程
- 如何从另一个进程解开全局钩子?
- 如何使用带有矢量的 winapi 读取进程内存从另一个进程读取缓冲区?
- 为什么一个进程会挂在RtlExitUserProcess/LdrpDrainWorkQueue中?
- 先进先出:一个进程永远不会从管道读取
- 如何在MPI中将矩阵从一个进程转移到另一个进程
- 将vector<vector<double>>从x86平台中创建的一个进程发送到x64中构建的另一个进程的最快方法是什么
- 带有 QSharedMemory 的 IPC,如果其中一个进程挂起,则存在风险
- 通过 c++ 中的 udp 套接字将派生类对象从一个进程发送到另一个进程
- 如何:监视Windows中另一个进程的文件访问?
- 是否可以注入一个进程并获取给定的句柄,然后使用它们注入另一个进程
- 尝试启动另一个进程并通过 MPI 加入它,但获得访问冲突
- 将窗口句柄从一个进程使用到另一个进程(插件 vst 音频)
- 启动另一个进程的最佳方式C++?
- 在 Linux 下的 Qt,如何检测一个进程已经在运行
- 当一个进程截断 Boost 进程间库创建的共享内存时,进程需要重新映射
- Win32/Gdigrab - 如何将另一个进程窗口设置为无边框
- 为什么我不能用这个函数在Qt框架中打开另一个进程?
- 创建一个进程,指定要在其上运行的 NUMA 节点
- 多次运行程序,同时保留一个进程