gpt4 book ai didi

c - 是否会选择在放入 fd_set 之前已经关闭的描述符?

转载 作者:太空宇宙 更新时间:2023-11-04 02:23:07 24 4
gpt4 key购买 nike

如果当我在 select 系统调用中使用的 rdset 中放置一个连接描述符时,客户端关闭了该描述符,因此在调用 select 时它已经关闭,它是否仍会被选中并读取/在上面写上 return 0?

还是会保留在集合中永远不会被选中?

最佳答案

If while I put a connection descriptor in the rdset used in the select syscall the client closes that descriptor so it is already closed when the select is called, will it still be selected and a read/write on it return 0?

Or will it remain in the set and never be selected?

可能两者都不是。最可能的结果是 select() 调用失败,返回 -1 并将 errno 设置为 EBADFPer POSIX , 这表明

One or more of the file descriptor sets specified a file descriptor that is not a valid open file descriptor.

The Linux manual page for select(2)给出一个已经关闭的文件描述符作为坏文件描述符的具体例子。 但是,Linux 手册还记录了一个错误,即Linux select() 会忽略提供的fdset 中大于进程当前打开的任何fd 的错误。那么,在 Linux 上,您不能依赖 select() 在您的场景中失败,但如果 select() 没有失败,那么它永远不会选择有问题的文件描述符。

关于c - 是否会选择在放入 fd_set 之前已经关闭的描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55031563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com