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_ANONnie 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_SHAREDutrzymują się dane (i MAP_ANONwyklucza trwałość). Pełny przykład znajduje się w sekcji Uzasadnienie specyfikacji shm_open().