我有一个文件描述符列表,我想找到所有可以阅读的内容。到目前为止,我正在使用下面的函数来做 python
select.select(read_fds, [], [], 1),它返回准备读取流的列表。我正在尝试在 Rust 中做同样的事情。我正在使用 nix crate,但是函数select 只返回准备读取的文件描述符的数量。有没有办法获取文件描述符列表?
select是一个 C 函数,它就地修改您传递给它的参数(文件描述符集),而不是分配和返回一个全新的结构。nix::select只是该 C 函数的一个薄包装。Python 在这里确实是异常值,因为它通过分配包含结果的完全独立的列表来偏离 C API。
使用时nix::select,您应该检查传入的 FD 集 - 它们将被修改为仅包含准备好的文件描述符。
let mut readfds = FdSet::new();
readfds.insert(0);
readfds.insert(3);
let _ = select(&mut readfds, None, None)
for fd in readfds.fds(None) {
println!("{:?}", fd);
}
Run Code Online (Sandbox Code Playgroud)
FdSet::fds 返回集合中文件描述符的迭代器。
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |