【发布时间】:2012-08-10 23:44:27
【问题描述】:
我在几个地方读到过,您可以将 poll(2) 与 posix 队列一起使用,但我在互联网上没有找到一个简单的示例。所以我推测它应该是这样的
mq_send(socket->mFd, (const char*)data->getBuffer(), data->getLen(), 0 );
//and then in an other porcess here is my poll
::poll(m_descriptors, ii, msecWaitTime);
但这不起作用,我希望 POLLIN 或 POLLRDNORM 或可能 POLLRDBAND 或任何东西到达,但它没有。而且我很确定我的描述符在 PollFd 数组中。我做错了什么,或者这是正确的,问题出在我的代码中的其他地方? (我在 OpenSuse 上,它是一个 linux,所以我猜这应该可以工作)。
【问题讨论】:
-
您可以在某些操作系统上,例如linux。但是请显示您的所有代码,因为当前的 2 行并没有告诉我们任何重要的信息。显示您在
m_descriptors中设置消息队列描述符的位置,显示类型以及如何计算ii等。 -
您好,代码庞大且分类,但如果错误是我错误地设置了 m_descriptors 和 ii,那么我会进一步调查。我只需要知道,这个例子在理论上是否正确并且应该起作用,或者这不是这些队列应该被轮询的方式。