Tôi có một chút vấn đề với một trong những dự án của mình.
Tôi đã cố gắng tìm một ví dụ được ghi chép rõ ràng về việc sử dụng bộ nhớ dùng chung với fork()
nhưng không thành công.
Về cơ bản, kịch bản là khi người dùng khởi động chương trình, tôi cần lưu trữ hai giá trị trong bộ nhớ chia sẻ: current_path là char * và tên tệp cũng là char * .
Tùy thuộc vào các đối số lệnh, một tiến trình mới được khởi động fork()
và tiến trình đó cần đọc và sửa đổi biến current_path được lưu trữ trong bộ nhớ dùng chung trong khi biến file_name chỉ được đọc.
Có hướng dẫn tốt về bộ nhớ dùng chung với mã ví dụ (nếu có thể) mà bạn có thể hướng dẫn tôi không?
shmget()
et al. và cũng là mmap()
cách tiếp cận thuần túy với MAP_ANON
(hay còn gọi là MAP_ANONYMOUS
) - mặc dù MAP_ANON
không được định nghĩa bởi POSIX. Ngoài ra còn có POSIX shm_open()
và shm_close()
để quản lý các đối tượng bộ nhớ dùng chung. [… Tiếp tục…]
shm_unlink()
), trong khi các cơ chế sử dụng mmap()
yêu cầu tệp và MAP_SHARED
tồn tại dữ liệu (và MAP_ANON
loại trừ sự tồn tại). Có một ví dụ đầy đủ trong phần Cơ sở lý luận của đặc điểm kỹ thuật của shm_open()
.