DDS 参与者在终止时不会立即注销自己
DDS participant doesnt unregisters itself immediately when terminated
我观察到,即使我通过按 ctr + C 停止节点或参与者,即终止它......它仍然显示在管理控制台或 2 分钟左右。为什么不立即解除消化。有办法吗?
关闭应用程序时,您应该清理 DDS 实体,如 this piece of example code 中所示。简而言之,它调用以下方法:
DDS_DomainParticipant_delete_contained_entities(participant);
DDS_DomainParticipantFactory_delete_participant(DDS_TheParticipantFactory, participant);
如果您不这样做,DDS 发现过程将在一段时间后自行检测到参与者已经离开。如知识库文章 What settings affect DomainParticipant’s liveliness?
中所述,此机制的响应能力是可配置的
现在按Ctrl+C一般不会执行上面描述的代码,因为信号会马上终止进程。据我所知,避免这种情况的唯一方法是安装调用该清理功能的信号处理程序。这是一个要点,其中包含一些有关如何安装信号处理程序的示例代码:aspyct/signal.c.
我观察到,即使我通过按 ctr + C 停止节点或参与者,即终止它......它仍然显示在管理控制台或 2 分钟左右。为什么不立即解除消化。有办法吗?
关闭应用程序时,您应该清理 DDS 实体,如 this piece of example code 中所示。简而言之,它调用以下方法:
DDS_DomainParticipant_delete_contained_entities(participant);
DDS_DomainParticipantFactory_delete_participant(DDS_TheParticipantFactory, participant);
如果您不这样做,DDS 发现过程将在一段时间后自行检测到参与者已经离开。如知识库文章 What settings affect DomainParticipant’s liveliness?
中所述,此机制的响应能力是可配置的现在按Ctrl+C一般不会执行上面描述的代码,因为信号会马上终止进程。据我所知,避免这种情况的唯一方法是安装调用该清理功能的信号处理程序。这是一个要点,其中包含一些有关如何安装信号处理程序的示例代码:aspyct/signal.c.