2009-12-09 14 views
5

Tôi đã triển khai hàng đợi thông báo POSIX. Về phía người nghe, tôi mở hàng đợi như thế này:Hàng đợi tin nhắn POSIX có thể được sử dụng cho người dùng chéo trên Linux không?

mqdes = mq_open(s_mailbox_name.c_str(), O_RDONLY | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO, NULL);

Về phía người gửi, tôi mở hàng đợi như thế này:

mqdes = mq_open(m_s_mailbox_name.c_str(), O_WRONLY);

Chuỗi là như nhau trên cả hai, cho phép gọi nó là /foobox

Bây giờ, khi tôi chạy cả người gửi và người nhận với cùng một người dùng trên hộp, mọi thứ hoạt động hoàn hảo. Tuy nhiên Nếu người gửi và người nhận là 2 người dùng khác nhau, người nhận không thể mở hàng đợi. Tôi nghĩ đây không phải là vấn đề bởi vì tôi mở hàng đợi là 0777 ở trên nên mọi người đều có thể RWX.

Có điều gì hiển nhiên tôi đang làm sai không? Hoặc là điều này không thể (Xin đừng để cho nó được cái này)

Cảm ơn

Trả lời

6

Kiểm tra umask.

Từ man mq_open: "Cài đặt quyền được đeo mặt nạ chống lại quá trình umask".

+2

Bạn là anh hùng của tôi, cảm ơn: D, cuối cùng tôi có thể rời khỏi công việc ngay bây giờ. – Salgar

+0

Bạn được chào đón. Chúc một buổi tối tốt đẹp. –