Tôi có một thư viện được chia sẻ (.so) mà tôi tải trước trước khi thực hiện một ứng dụng và tôi có một vài cấu trúc dữ liệu chung trong thư viện được chia sẻ mà ứng dụng sử dụng. Ứng dụng có thể tạo các quy trình khác nói bằng fork() và các quy trình này có thể cập nhật cấu trúc dữ liệu toàn cục trong thư viện được chia sẻ. Tôi muốn giữ một cái nhìn nhất quán về các cấu trúc dữ liệu toàn cầu này trên tất cả các quy trình. Có cách nào tôi có thể thực hiện điều này trong Linux?Làm thế nào để chia sẻ các biến toàn cầu trong một thư viện được chia sẻ (.so) trong các trường hợp của cùng một quá trình sử dụng thư viện được chia sẻ trong Linux?
Tôi đã thử sử dụng lệnh shm_ * và mmap() để ánh xạ dữ liệu chung của thư viện được chia sẻ thành một phân đoạn được chia sẻ nhưng nó không hoạt động.
Điều này không làm những gì OP yêu cầu: chia sẻ, hai chiều, các biến toàn cầu. – bmargulies
Chắc chắn nó, nếu những biến toàn cầu được lưu trữ trong bản đồ được chia sẻ (điều này cũng có nghĩa là các biến toàn cầu thực sự cần phải là con trỏ, nhưng đó chỉ là một chi tiết thực hiện). – caf
Nó sẽ làm việc trên một ngã ba() nhưng không phải là một exec() (nói rằng quá trình mới sử dụng cùng một thư viện), do đó, sẽ không làm việc trong trường hợp chung – MarkR