``pollout''Linux函数中的“ Pollout”事件是什么意思
What does `POLLOUT` event in `poll` Linux function mean?
从Linux文档中,POLLOUT
含义正常数据可以编写而不阻止。好吧,但是这种解释是歧义的。poll
报告此事件后,可以写入多少数据而不阻止?1个字节?2个字节?千兆字?POLLOUT
在阻塞套接字上发生后,如何检查我可以在没有块的情况下发送到套接字的数据?
轮询系统调用只会告诉您文件描述符(物理设备)中发生了一些事情,但它没有告诉您有多少空间可以读取或写入。为了确切知道可用于读取或写入的字节数据,您必须使用read()或write()系统调用来获取返回值,以说明您实际读取或编写的字节数。
因此,poll()主要用于必须使用多个输入或输出流的应用,而不会陷入其中任何一个。在这种情况下,您不能使用write()或read(),因为您不能在一个线程中同时监视多个描述符。
btw,对于设备驱动程序,驱动程序中的民意调查的基础实现通常喜欢此(ldd3的代码):
static unsigned int scull_p_poll(struct file *filp, poll_table *wait)
{
poll_wait(filp, &dev->inq, wait);
poll_wait(filp, &dev->outq, wait);
...........
if (spacefree(dev))
mask |= POLLOUT | POLLWRNORM; /* writable */
up(&dev->sem);
return mask;
}
如果poll()
设置POLLOUT
标志,则至少可以编写一个字节而不会阻止。然后,您可能会发现write()
操作仅执行部分写入,因此通过返回短计数来指示。当通过poll()
和/或select()
多路复用I/O时,您必须始终准备部分读取和写入。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?