Первоначально я назвал вопрос как «В QNX, в чем разница между _PULSE_CODE_DISCONNECT и _PULSE_CODE_COIDDEATH?». Тем не менее, я думаю, что мой вопрос немного шире.
Я реализовал IPC-сервер, используя QNX Neutrino OS 6.6.0. По сути, у меня есть сервер, который запрашивает информацию о конфигурации, такую как настройки и прочее. Он также принимает изменения в настройках. Это позволяет клиентам подписаться на него. Это означает, что после подписки, если изменение произойдет с параметром, сервер уведомит других клиентов.
Все идет нормально. Этот материал до этого момента имеет смысл для меня. Что мне неясно, так это подходящий способ отсоединения клиента или умирания процесса.
Прямо сейчас я получаю _PULSE_CODE_DISCONNECT на моем сервере. Что именно это означает? Я не получаю _PULSE_CODE_COIDDEATH, чего я и ожидал.
Я думаю, в частности, я немного запутался в том, что такое CID против Scoid в QNX.
получающий _PULSE_CODE_COIDDEATH
зависит от флагов, которые вы установили при создании канала. Чтобы получить этот импульс, вам нужно установить флаг канала _NTO_CHF_COID_DISCONNECT
,
_PULSE_CODE_DISCONNECT
относится к флагу канала _NTO_CHF_DISCONNECT
, чтобы получить импульс, когда все соединения отключены.
Смотрите документацию для ChannelCreate
:
http://www.qnx.com/developers/docs/6.6.0_anm11_wf10/index.html#com.qnx.doc.neutrino.lib_ref/topic/c/channelcreate.html
Coid — это идентификатор соединения, который вы получаете при подключении к каналу через ConnectAttach
,
scoid — это идентификатор соединения с сервером (присваивается внутри), который вы получаете в импульсе, о котором говорите. В контексте получения и ответа сообщения ядро направляет ответ клиенту.
Кроме того, я понимаю, что если вы получите _PULSE_CODE_COIDDEATH
вам нужно очистить, позвонив ConnectDetach(scoid)
где скойд от пульса.
Других решений пока нет …