Documentation for mq_unlink ditQuelle est la limite dans mq_unlink?
nom ENAMETOOLONG était trop long.
mais quelle est cette limite? Je pensais que c'était NAME_MAX
, mais ce n'est pas le cas. Le code suivant s'exécute pour toujours (tant qu'il y a de la mémoire, je suppose).
#include <mqueue.h>
#include <string>
#include <errno.h>
#include <unistd.h>
int main(void)
{
std::string tooLong = "long";
do
{
usleep(10);
tooLong.append("longer");
mq_unlink(tooLong.c_str());
}
while(errno != ENAMETOOLONG);
}
Alors, quelle est la limite? Quand cette fonction renvoie-t-elle ENAMETOOLONG
?
Vous devez vérifier la valeur de retour de la fonction avant de supposer qu'il y a une erreur. Il semble également que votre nom soit dans un format incorrect. http://man7.org/linux/man-pages/man7/mq_overview.7.html –
autant que je peux tester, il s'arrête quand la chaîne devient 257 caractères de long, c'est-à-dire plus long que "NAME_MAX" de 255. – ilkkachu