2009-12-09 3 views
5

J'ai implémenté une file d'attente de messages POSIX. Du côté de l'auditeur, j'ouvre la file d'attente comme ceci:Est-ce que les files d'attente de messages POSIX peuvent être utilisées en mode inter-utilisateur sous Linux?

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

Du côté de l'expéditeur, j'ouvre la file d'attente comme ceci:

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

La chaîne est la même sur les deux, appelons-le /foobox

Maintenant, quand je cours l'expéditeur et le récepteur comme le même utilisateur sur la boîte, tout fonctionne parfaitement. Toutefois, si l'expéditeur et le destinataire sont deux utilisateurs différents, le destinataire ne peut pas ouvrir la file d'attente. Je pense que ce ne serait pas un problème parce que j'ouvre la file d'attente 0777 ci-dessus afin que tout le monde puisse RWX.

Y at-il quelque chose d'évident que je fais mal? Ou est-ce pas possible (S'il vous plaît ne laissez pas être celui-ci)

Merci

Répondre

6

Vérifiez umask. De man mq_open: "Les paramètres d'autorisation sont masqués par rapport au processus umask."

+2

Vous êtes mon héros, merci: D, je peux enfin quitter le travail maintenant. – Salgar

+0

De rien. Passez une bonne soirée. –

Questions connexes