2009-12-09 97 views
5

我已经实现了一个POSIX消息队列。 在监听方面,我打开队列是这样的:Linux上可以使用POSIX消息队列吗?

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

在发送方,我打开队列是这样的:

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

的字符串是相同的在这两个上,让我们打电话/foobox

现在,当我运行发件人和接收者作为箱子上的同一用户,一切正常。但是,如果发送者和接收者是两个不同的用户,则接收者无法打开队列。我会认为这不会是一个问题,因为我打开队列为0777以上,所以每个人都可以RWX。

有什么明显的我做错了吗?或者,这是不可能的(请不要让它成为这一个)

感谢

回答

6

检查的umask

man mq_open:“权限设置对进程umask进行了屏蔽。”

+2

你是我的英雄,谢谢:D,我现在终于可以离开工作了。 – Salgar 2009-12-09 19:03:12

+0

不客气。祝你有个愉快的夜晚。 – 2009-12-09 19:04:29