POSIX select()何时真正返回?

伊佐

我正在使用POSIX接口进行一些套接字编程。我试图使用select()函数来监视何时可以读取/写入无阻塞套接字。

使用select()函数时,我给它提供了一组读写文件描述符。具体来说,我有一个套接字fd,我想检查它是否可读可写。

POSIX文件指出,返回值是所有的fd功能集合所有文件描述符的总和。

我的早期测试表明,我得到一个很好的“ 2”字样(这意味着我的套接字既可读又可写)。但是,如果文件描述符不能同时变为可读写状态,会发生什么情况?假设它在变为可写状态之前要经过一微秒的可读性?发生什么了?它是否仅返回1?

库萨兰达

select() 当至少一个文件描述符准备好进行读取或写入,达到超时或信号中断时,将返回。

这意味着您必须select()在确定至少一个文件描述符已准备好读取或写入(这些文件集已由修改select()之后,才测试给定的文件描述符集

在成功完成后,pselect()select()功能应修改的对象指向的readfdswritefdserrorfds参数指示哪些文件描述符准备好读,准备好写,或有错误情况分别挂起,并应返回的准备总数所有输出集中的描述符。对于每个小于的文件描述符nfds,如果在输入上设置了相应的位并且该文件描述符的关联条件为true,则在成功完成时应设置相应的位。

(来自上的POSIX文档select()

如果您需要同时打开文件描述符以进行读取和写入,则必须遍历select()直到满足两个条件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SELECT查询何时开始返回行?

来自分类Dev

POSIX和Bash脚本

来自分类Dev

关于并行POSIX线程

来自分类Dev

VxWorks POSIX implementation

来自分类Dev

VxWorks POSIX实施

来自分类Dev

标志掩码读写posix

来自分类Dev

打印POSIX字符类

来自分类Dev

Perl POSIX返回错误的年份

来自分类Dev

Android POSIX兼容吗?

来自分类Dev

了解posix屏障机制

来自分类Dev

试图了解POSIX线程

来自分类Dev

清单:何时编写可移植的/ POSIX兼容的外壳代码?

来自分类Dev

C / C ++ Posix BSD套接字-HTTP请求始终返回状态400

来自分类Dev

什么是“ posix隔离”?

来自分类Dev

POSIX TCP套接字上的保持活动故障是否会导致挂起的read()返回?

来自分类Dev

为什么errno,当POSIX函数通过返回-1或NULL指示错误情况时

来自分类Dev

如何映射POSIX的select和Windows WSAEventSelect的事件

来自分类Dev

为什么boost :: filesystem :: path :: string()在Windows上按值返回,而在POSIX上按引用返回?

来自分类Dev

POSIX外壳等效于<()

来自分类Dev

如果POSIX套接字的“读取”函数返回0,是否表示发生了错误?

来自分类Dev

用POSIX读取文件

来自分类Dev

使用POSIX的并发

来自分类Dev

何时真正调用idTokenChanges?

来自分类Dev

POSIX共享内存模型

来自分类Dev

文件POSIX功能

来自分类Dev

多个POSIX线程

来自分类Dev

open()返回新文件描述符posix

来自分类Dev

清单:何时编写可移植的/ POSIX兼容的外壳代码?

来自分类Dev

为什么boost :: filesystem :: path :: string()在Windows上按值返回,而在POSIX上按引用返回?