Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何检查是否有人连接到boost::interprocess::message_队列_C++_Boost_Boost Interprocess - Fatal编程技术网

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
内部的锁类型是非健壮的,这意味着异常进程终止将导致锁卡住。