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.
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
Vous devez vous connecter pour publier un commentaire.
Juste
mq_open(argv[1], O_RDONLY);
doit échouer avec "ENOENT (Aucun fichier ou répertoire)" si le message de la file d'attente n'existe pas.Si vous changez d'utiliser O_CREAT, vous avez besoin de passer 2 des arguments supplémentaires à mq_open(). (lire le paragraphe sur les O_CREAT).e.g.
OriginalL'auteur nos