При завершении работы вашего приложения вы должны очистить сущности DDS, как показано в этом фрагменте примера кода . В двух словах, он вызывает следующие методы:
DDS_DomainParticipant_delete_contained_entities(participant);
DDS_DomainParticipantFactory_delete_participant(DDS_TheParticipantFactory, participant);
Если вы этого не сделаете, процесс обнаружения DDS через некоторое время обнаружит, что Участник ушел. Реагирование этого механизма настраивается, как описано в статье базы знаний Какие параметры влияют на жизнеспособность DomainParticipant?
Теперь нажатие Ctrl + C обычно не выполнит код, описанный выше, потому что сигнал немедленно завершит процесс. Насколько я знаю, единственный способ избежать этого - установить обработчик сигнала, который вызывает эту функцию очистки. Вот пример кода для установки обработчика сигналов: aspyct / signal.c .