Почему shm_open () успешно работает, даже если нет / dev / shm? - PullRequest
1 голос
/ 10 мая 2019

На моем компьютере с Linux нет / dev / shm (я размонтировал и удалил его вручную), но когда я пытаюсь использовать shm_open () в моем приложении, например shm_open("foo", O_CREAT | O_RDWR, 0666);, он все равно завершается успешно и возвращает 3 в качестве fd.Так в этом случае, где создается общая память?Может ли он по-прежнему быть общим с другими процессами?

И в этом случае, почему shm_open успешен только тогда, когда он запускается от имени пользователя root, но терпит неудачу как любой пользователь без полномочий root?

1 Ответ

0 голосов
/ 10 мая 2019

shm_open создает объект общей памяти, если он не существует.

Ваш fd должен быть допустимым дескриптором файла, который вы можете использовать с mmap, чтобы разделить эту область памяти с другими процессами.


Когда вы отключили и «удалили» точку монтирования /dev/shm, на самом деле ничего не изменилось. Он служит только точкой доступа к файловой системе на основе ОЗУ.

...