Контекст: Linux (Ubuntu), C
У меня есть несколько идентичных минималистических процессов, порожденных в одной коробке.Процессы занимаются определенным сетевым взаимодействием и проводят большую часть своего времени в poll
(или select
или в любом другом месте - я могу изменить это при необходимости).
Время жизни процессов контролируется runit
сmultiwatch
(если это что-то меняет).
Время от времени случайный процесс может решить, что он хочет отправить сообщение (т. Е. Набор данных) всем другим процессам (включая себя, еслиэто делает вещи проще).
Кроме того, время от времени человек-оператор может захотеть отправить такое сообщение из командной строки (предположим, что я могу написать инструмент командной строки по мере необходимости) - снова, каждому икаждый процесс.
Доставка сообщений должна быть гарантирована.Но он не должен блокировать отправителя, если какие-либо (или все) получатели внезапно исчезли (OTOH, если они живы, но заняты, они должны в конечном итоге получить сообщение.) Если процесс получателя находится в режиме ожидания в опросе, он должен быть разбужен сообщением.
Какой самый надежный способ организовать это общение без особых сложностей?
Примечание. По техническим причинам я не могу использовать сигналы POSIX для связи между процессами.