本站资源收集于互联网,不提供软件存储服务,每天免费更新优质的软件以及学习资源!

Windows系统下为什么select库不能用于文件对象?

网络教程 app 1℃

Windows系统下为什么select库不能用于文件对象

select 使用 io 多路复用 oserror: [winerror 10038]

在 windows 系统上使用 select 库进行 io 多路复用时,可能会遇到如下错误:

OSError: [WinError 10038] 在一个非套接字上尝试了一个操作

这是因为在 windows 系统中,select 库只能用于套接字,不能用于文件对象。select 函数的第二个参数用于监听文件描述符(即文件句柄),而文件描述符通常由套接字创建。

在 linux 系统中,select 可以同时监听套接字和文件描述符。但由于 windows 系统中 select 底层实现由 winsock 库提供,而 winsock 仅处理来自 winsock 的文件描述符,因此无法处理来自其他来源(例如文件)的文件描述符。

因此,在 windows 系统上使用 select 时,只能监听套接字,而无法监听文件对象。如果需要监听文件对象,可以使用 windows 提供的其他 api,例如 waitformultipleobjects()。

以上就是Windows 系统下为什么 select 库不能用于文件对象?的详细内容,更多请关注范的资源库其它相关文章!

转载请注明:范的资源库 » Windows系统下为什么select库不能用于文件对象?

喜欢 (0)