1

我观察到,即使我通过按 ctr + C 停止节点或参与者,即终止它...它仍然显示在管理控制台或 2 分钟左右。为什么不立即删除。有没有办法这样做?

4

1 回答 1

1

在您的应用程序关闭时,您应该清理 DDS 实体,如这段示例代码所示。简而言之,它调用以下方法:

DDS_DomainParticipant_delete_contained_entities(participant);
DDS_DomainParticipantFactory_delete_participant(DDS_TheParticipantFactory, participant);

如果您不这样做,DDS 发现过程将在一段时间后自行检测参与者已经离开。该机制的响应能力是可配置的,知识库文章哪些设置会影响 DomainParticipant 的活跃度?

现在按Ctrl+C通常不会执行上述代码,因为信号会立即终止进程。据我所知,避免这种情况的唯一方法是安装一个调用该清理功能的信号处理程序。以下是一些关于如何安装信号处理程序的示例代码的要点:aspyct/signal.c

于 2018-08-29T16:06:08.693 回答