Mam mały problem z jednym z moich projektów.
Próbowałem znaleźć dobrze udokumentowany przykład użycia pamięci współdzielonej, fork()
ale bezskutecznie.
Zasadniczo scenariusz jest taki, że kiedy użytkownik uruchamia program, muszę przechowywać dwie wartości w pamięci współdzielonej: bieżąca_ścieżka, która jest znakiem * i nazwa_pliku, która jest również znakem * .
W zależności od argumentów polecenia, nowy proces jest uruchamiany za pomocą fork()
i ten proces musi odczytać i zmodyfikować zmienną current_path przechowywaną w pamięci współdzielonej, podczas gdy zmienna nazwa_pliku jest tylko do odczytu.
Czy istnieje dobry poradnik na temat pamięci współdzielonej z przykładowym kodem (jeśli to możliwe), do którego możesz mnie skierować?
shmget()
i wsp. a także czyste mmap()
podejście z MAP_ANON
(aka MAP_ANONYMOUS
) - chociaż MAP_ANON
nie jest zdefiniowane przez POSIX. Istnieje również POSIX shm_open()
i shm_close()
do zarządzania obiektami pamięci współdzielonej. [… Ciąg dalszy…]
shm_unlink()
), podczas gdy mechanizmy używające mmap()
wymagają pliku i MAP_SHARED
utrzymują się dane (i MAP_ANON
wyklucza trwałość). Pełny przykład znajduje się w sekcji Uzasadnienie specyfikacji shm_open()
.