Когда вы звоните shm_open
, вы можете передать ему флаг O_RDONLY
параметру режима.
В качестве альтернативы вы можете использовать mprotect
, чтобы пометить определенные страницы как (например, только для чтения). Для этого вам понадобится сотрудничество и доверие между двумя процессами, у B нет способа сказать, что A не может писать в него, используя mprotect
.
Если вы действительно хотите быть уверены, что другой процесс не может вмешиваться, тогда разумной идеей может быть общение через каналы или сокеты некоторого описания.
Вы также можете использовать mmap
для сопоставления чего-либо (например, в /dev/shm
?), В котором права доступа к файлам делают невозможным запись для одного из двух процессов, если они выполняются как отдельные UID. Например, если у вас есть /dev/shm/myprocess
, принадлежащий производителю пользователя и потребителю группы, и вы установили права доступа к файлу на 0640 перед сопоставлением его процессом, выполняющимся с этим UID и GID, тогда вы можете запретить записи второго процесса в него.