Обновление вопроса с дополнительной информацией:
У меня есть 32 сетевых пространства имен в Linux Ubuntu 14.04, и в каждом пространстве имен запускается программа C. Я хочу, чтобы программа могла делиться некоторыми данными со своими братьями и сестрами в других пространствах имен (не потоки, отдельные процессы). Как это может быть сделано? Я не могу выполнять многоадресную рассылку UDP, поскольку каждое пространство имен имеет свой собственный сетевой стек, а пакеты, отправленные в многоадресный домен, не видны другим пространствам имен. Я также не могу думать о том, чтобы сделать это чисто через память mmap.
С помощью mmap() каждый процесс может одновременно пытаться выполнить запись на карту. Кроме того, когда один процесс выполняет запись, другие должны иметь возможность понять это и обновить свою структуру данных с помощью этого нового содержимого. Им разрешено писать, как только каждый процесс узнает об этом предыдущем обновлении. Вот почему я сначала подумал об использовании сокета UDP Multicast для связи, он очень хорошо работает для 32 процессов, но они должны находиться в одном и том же пространстве имен.
Кроме того, насколько я понимаю, сокет домена Unix не позволяет работать нескольким устройствам чтения/записи.
Ценим любую помощь!
mmap
. Почему вы думаете, что это не сработает? И если вы хотите сделать это с передачей сообщений, как насчет использования доменных сокетов UNIX? - person Andy Schweig   schedule 13.03.2016