#stdout-stderr #file-descriptor #stderr #stdout #pipe #log

io-mux

提供多个文件描述符写入一个按顺序的管道,按数据来源(例如 stdout/stderr)标记

10 个稳定版本

2.2.0 2024年1月16日
2.1.0 2023年7月17日
1.5.0 2023年6月6日
1.4.0 2020年11月15日
0.1.1 2020年2月5日

#154命令行界面

Download history 123/week @ 2024-05-20 18/week @ 2024-05-27 15/week @ 2024-06-03 13/week @ 2024-06-10 16/week @ 2024-06-17 4/week @ 2024-06-24 4/week @ 2024-07-01 126/week @ 2024-07-29

每月 126 次下载
用于 2 crates

MIT/Apache

25KB
351 代码行

io-mux

一个 Mux 提供一个接收端和多个发送端。发送到任何发送端的数据按顺序从接收端输出,并标记发送者。

每个发送端作为一个文件描述符工作。例如,使用 io-mux,您可以收集进程的 stdout 和 stderr,并突出显示 stderr 中的任何错误输出,同时保持 stdout 和 stderr 中的数据相对顺序。

注意,读取不提供“EOF”指示;如果没有进一步的数据到达,它将永久阻塞。避免在数据源退出后读取。

文档

异步

如果您启用了 async 功能,io-mux 还提供 AsyncMux 类型,允许异步处理数据。

您可能希望与 async-processasync-pidfd 一起使用,以并发等待进程的退出和该进程的复用输出和错误。在进程退出之前,调用 AsyncMux::read() 获取下一个输出块,同时与进程的退出并发等待。一旦进程退出并且因此不会产生更多输出,调用 AsyncMux::read_nonblock 直到它返回 None 以清空 Mux 的剩余输出。

可移植性

io-mux 使用 UNIX 套接字,因此它只能在 UNIX 平台上运行。对非 Linux 平台的支持是实验性的,并且在语义上有重大缺陷;请参阅 文档 了解更多详情。

依赖项

~1.6–10MB
~105K SLoC