J'ai un petit problème avec l'un de mes projets.
J'ai essayé de trouver un exemple bien documenté d'utilisation de la mémoire partagée avec fork()
mais sans succès.
Fondamentalement, le scénario est que lorsque l'utilisateur démarre le programme, je dois stocker deux valeurs dans la mémoire partagée: current_path qui est un char * et un file_name qui est également char * .
En fonction des arguments de la commande, un nouveau processus est lancé avec fork()
et ce processus doit lire et modifier la variable current_path stockée dans la mémoire partagée tandis que la variable file_name est en lecture seule.
Existe-t-il un bon tutoriel sur la mémoire partagée avec un exemple de code (si possible) auquel vous pouvez me diriger?
shmget()
et al. et aussi l' mmap()
approche pure avec MAP_ANON
(aka MAP_ANONYMOUS
) - bien qu'elle MAP_ANON
ne soit pas définie par POSIX. Il existe également POSIX shm_open()
et shm_close()
pour la gestion des objets de mémoire partagée. […
shm_unlink()
), alors que les mécanismes utilisant mmap()
nécessitent un fichier et MAP_SHARED
persistent les données (et MAP_ANON
empêche la persistance). Il y a un exemple complet dans la section Justification de la spécification de shm_open()
.