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

Perl POSIX返回错误的年份

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

何时真正调用idTokenChanges?

来自分类Dev

SELECT查询何时开始返回行?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Android POSIX兼容吗?

来自分类Dev

什么是“ posix隔离”?

来自分类Dev

试图了解POSIX线程

来自分类Dev

标志掩码读写posix

来自分类Dev

POSIX和Bash脚本

来自分类Dev

打印POSIX字符类

来自分类Dev

关于并行POSIX线程

来自分类Dev

VxWorks POSIX implementation

来自分类Dev

VxWorks POSIX实施

来自分类Dev

了解posix屏障机制

来自分类Dev

POSIX外壳等效于<()

来自分类Dev

用POSIX读取文件

来自分类Dev

使用POSIX的并发

来自分类Dev

POSIX共享内存模型

来自分类Dev

文件POSIX功能

来自分类Dev

多个POSIX线程