C++ 如何检查是否有人连接到boost::interprocess::message_队列
我有一个连接两个进程的C++ 如何检查是否有人连接到boost::interprocess::message_队列,c++,boost,boost-interprocess,C++,Boost,Boost Interprocess,我有一个连接两个进程的boost::interprocess::message_queue,有没有办法知道这两个进程是否处于活动状态并已连接? 我目前的方法是发送HartBeat消息,如果我在x mill之后没有得到响应,我就提出错误。 有没有一种方法可以使用boost::interprocess::message\u queueAPI来检查这一点?我不这么认为,但您可能可以对每个消息队列使用boost::interprocess::basic\u managed\u shared\u memo
boost::interprocess::message_queue
,有没有办法知道这两个进程是否处于活动状态并已连接?
我目前的方法是发送HartBeat消息,如果我在x mill之后没有得到响应,我就提出错误。
有没有一种方法可以使用
boost::interprocess::message\u queue
API来检查这一点?我不这么认为,但您可能可以对每个消息队列使用boost::interprocess::basic\u managed\u shared\u memory
,并在其中存储连接的进程id:s。检查存储在共享内存中的进程是否处于活动状态可能可以使用另一个boost
函数来完成,或者您可以使用本机函数来完成该操作。@TEDLYNMO因此,这意味着您无法执行OP askedNon可移植方法存在的操作。例如,fuser
或lsof
可以使用/dev/shm/my message queue
@tedlynmo进程间通信列出程序。许多机制可用于发出“正在使用”的信号。另外,请记住,managed\u shared\u memory
内部的锁类型是非健壮的,这意味着异常进程终止将导致锁卡住。