У мене є проблема з одним із моїх проектів.
Я намагався знайти добре задокументований приклад використання спільної пам’яті, fork()
але не мав успіху.
В основному сценарій полягає в тому, що коли користувач запускає програму, мені потрібно зберігати два значення в спільній пам'яті: current_path, який є char *, і ім'я файлу, яке також є char * .
Залежно від аргументів команди, починається новий процес, fork()
і цей процес повинен читати та змінювати змінну current_path, що зберігається у спільній пам'яті, тоді як змінна file_name читається лише для читання.
Чи є хороший підручник із спільної пам'яті з прикладом коду (якщо можливо), до якого ви можете направити мене?
shmget()
та ін. а також чистий mmap()
підхід з MAP_ANON
(aka MAP_ANONYMOUS
) - хоча MAP_ANON
це не визначено POSIX. Існує також POSIX shm_open()
і shm_close()
для управління об'єктами спільної пам'яті. [… Продовження…]
shm_unlink()
), тоді як механізми, що використовують mmap()
файл, вимагають MAP_SHARED
збереження та збереження. дані (і MAP_ANON
виключає стійкість). У розділі Обгрунтування специфікації специфіки є повний приклад shm_open()
.