2012-01-06 20 views
11

Chúng tôi mở chia sẻ bộ nhớ tăng được tạo ra bởi quá trình khác như thế nàyphép Thiết lập cho bộ nhớ chia sẻ được tạo ra bởi tăng

boost::interprocess::managed_shared_memory segment(boost::interprocess::open_only, "SharedMem"); 

Nhưng nếu quá trình đã tạo ra bộ nhớ chia sẻ là một người dùng root, sau đó đọc quá trình nếu đó là người dùng bình thường, sẽ không thành công với lý do là:

terminate called after throwing an instance of 'boost::interprocess::interprocess_exception' 
what(): Permission denied 

Tôi nên làm gì để tránh điều này? đó là cấp quyền cho bộ nhớ dùng chung cho tất cả?

Trả lời

6

Nếu bạn nhìn vào shared_memoryconstructor, phải mất một đối tượng permissions. boost::interprocess::permissions::set_unrestricted có lẽ là những gì bạn đang tìm kiếm

void set_unrestricted(); 
//Sets permissions to unrestricted access: 
//  A null DACL for windows or 0666 for UNIX. 

Theo this, nó đã được bổ sung trong phiên bản 1,45

+0

chế độ mode_t là gì? –

+0

và phiên bản nào được triển khai? –

+0

Xem cập nhật của tôi ... được thêm 1.45 hoặc mới hơn –

Các vấn đề liên quan