mq_open: Invalid argument

Je suis en train de lancer le programme d'exemple pour les files de messages POSIX trouvé dans les page de man pour mq_notify. Je suis en cours d'exécution comme ./mq '/bla' et il me donne l'erreur mq_open: Invalid argument.

C'est la ligne dans l'exemple de programme qui donne l'erreur:

mqdes = mq_open(argv[1], O_RDONLY);

J'ai essayé de la modifier à

mqdes = mq_open("/bla", O_RDONLY | O_CREAT);

mais cela ne fonctionne toujours pas.

Ce doit être simple, mais je ne peux pas le comprendre. Ce que je fais mal?

C'est RHEL 5.8, par la manière.

EDIT: je me suis trompé sur la première erreur. Sans O_CREAT, il a dit "No such file or directory". Je suppose qu'il était en train d'ouvrir un message de la file d'attente qui n'existait pas. Avec O_CREAT, je pense que l'argument non valide erreur était parce que je n'avais que deux arguments, et vous avez besoin de quatre avec O_CREAT.

Post le strace de sortie de ce programme d'exemple. Notez bien que, si vous changez d'utiliser O_CREAT, vous avez besoin de passer 2 des arguments supplémentaires à mq_open(). par exemple, mq_open(argv[1], O_RDONLY | O_CREAT, 0666, NULL);
Oh, qu'il fixe. Je pense que je me suis trompé sur ma première erreur. Si je n'avais pas O_CREAT, il a dit "No such file" ou quelque chose. Quand j'ai ajouté O_CREAT, je pense que les "argument non valide" était l'argument de 3 ou 4, qui étaient manquants. Merci. Je ne peux accepter cela comme une réponse si vous voulez écrire comme un.

OriginalL'auteur yellowantphil | 2012-04-03