Контекст: Linux (Ubuntu), C, ZeroMQ
У меня есть сервер, который прослушивает ipc://
сокет SUB ZeroMQ (который физически является сокетом домена Unix).
У меня есть клиент, который должен подключиться к сокету, опубликовать свое сообщение и отключиться.
Проблема: если сервер убит (или иным образом неестественно умирает), файл сокета остается на месте. Если клиент пытается подключиться к этому устаревшему сокету, он блокируется в zmq_term()
.
Мне нужно предотвратить блокировку клиента, если сервера нет, но гарантировать доставку, если сервер жив, но занят.
Предположим, что я не могу отследить время жизни сервера по какой-то внешней магии (например, проверяя файл PID).
Есть какие-нибудь намеки?