Мне кажется, я понял, в чем проблема, или, скорее, ошибка со стороны.
Это то, что я прочитал с здесь -
[В отношении mq_open ()]
Возвращает: действительный дескриптор очереди сообщений, если очередь успешно
создан, или -1 (errno установлен).
Итак, я должен проверять значение для errno только , когда действительно происходит ошибка !. Но в приведенном выше коде я просто печатаю значение независимо от того, произошла ошибка или нет, и, таким образом, оно печатает сообщение об ошибке, соответствующее некоторому значению мусор , сохраненному в errno.
Так что мой код должен выглядеть примерно так -
if ((msgQueueDescriptor = mq_open("/myQueue", O_RDWR|O_CREAT, 0664 ,NULL ) == -1))
{
cout << msgQueueDescriptor << " " << errno << " " << strerror(errno);
}
else
{
cout << "All is well" ;
}
Разве я сам дурачился? P
PS: Что касается очереди сообщений, включенной в Ubuntu 10.10, я проверил флаги, как указано в «n.m.», они очень активны, и теперь я могу использовать очереди сообщений. Спасибо всем вам - Ларсману, VJovic, n.m., Joachim Pileborg, jørgensen.
О моем втором вопросе
Q2. Я также читал кое-что о запуске сервера mqueue до
на самом деле использовать очереди сообщений?
Я думаю, что это требование специально для QNX.