#非阻塞 #文件描述符 #读取器 #数据文件 #异步 I/O #I/O 读取 #命名管道

nonblock

从文件描述符(例如套接字、流、子进程 stdout、命名管道)读取可用数据,而不阻塞

2 个不稳定版本

0.2.0 2022年6月26日
0.1.0 2016年4月25日

#1076 in 异步

Download history 2516/week @ 2024-03-14 2215/week @ 2024-03-21 2510/week @ 2024-03-28 3329/week @ 2024-04-04 1923/week @ 2024-04-11 2723/week @ 2024-04-18 3519/week @ 2024-04-25 2316/week @ 2024-05-02 2392/week @ 2024-05-09 2106/week @ 2024-05-16 1991/week @ 2024-05-23 2691/week @ 2024-05-30 2530/week @ 2024-06-06 1894/week @ 2024-06-13 1860/week @ 2024-06-20 958/week @ 2024-06-27

7,723 每月下载量
5 crates 中使用

MIT 许可证

11KB
104 代码行

nonblock-rs

从文件描述符读取可用数据,而不阻塞

文档

Crates.io Build Status

示例

请参阅 structure-stdio.rs 以获取示例用法。

构建 & 测试

本项目使用 cargo 构建和测试

cargo build
cargo test
cargo doc --no-deps

提示:在构建文档之前,克隆现有文档以跟踪更改

git clone -b gh-pages [email protected]:anowell/nonblock-rs.git target/doc

lib.rs:

从文件描述符读取可用数据,而不阻塞

适用于从套接字、命名管道和子进程 stdout/stderr 进行非阻塞读取

示例

use std::io::Read;
use std::process::{Command, Stdio};
use std::time::Duration;
use nonblock::NonBlockingReader;

let mut child = Command::new("some-executable")
                        .stdout(Stdio::piped())
                        .spawn().unwrap();
let stdout = child.stdout.take().unwrap();
let mut noblock_stdout = NonBlockingReader::from_fd(stdout).unwrap();
while !noblock_stdout.is_eof() {
    let mut buf = String::new();
    noblock_stdout.read_available_to_string(&mut buf).unwrap();
    std::thread::sleep(Duration::from_secs(5));
}

依赖关系

~43KB