#pipe #terminal #ipc #fifo #cli #reader-writer #read-write

app pipe_watcher

终端的管道读取器和写入器。专为与 ipipe Rust 库配合使用而设计。

12 个稳定版本

2.1.2 2021 年 8 月 2 日
2.1.1 2021 年 4 月 8 日
2.0.3 2021 年 3 月 20 日
1.0.1 2021 年 3 月 19 日

835文件系统

每月 22 次下载

MIT/Apache

9KB
164

此 crate 使用 ipipe 库编译了 2 个二进制文件,用于与命名管道交互。二进制文件 pipe_listener 读取一个或多个命名管道的输出并将其写入标准输出。二进制文件 pipe_writer 读取标准输入并将其写入一个或多个命名管道。

这些程序可以很容易地组合使用,以随意重定向命名管道的 I/O。虽然它们专门设计用于与 ipipe API 一起使用,但它们可以与(可能是)任何其他用于 Windows 或 Unix 命名管道的 API 独立使用。

安装方法

cargo安装 pipe_watcher

管道监听器

用法:pipe_listener [pipe_name...]

可以指定多个管道名称。

在终端中

pipe_listener my_pipe1

然后,在你的 Rust 程序中

use ipipe::*;

fn main()
{
    ipipe::init("my_pipe1").unwrap();
    pprintln!("my_pipe1", "A line sent to you from me!");
}

这就完成了!你应该能在终端中看到输出。

管道写入器

用法:pipe_writer [pipe_name...]

管道监听器二进制文件的逆过程。

在终端中

pipe_writer my_pipe1

在你的 Rust 程序中

use ipipe::*;
use std::io::{Read, BufReader};

fn main()
{
    let pipe = ipipe::init("my_pipe1").unwrap();
    loop
    {
        for line in BufReader:new(pipe.clone()).lines()
        {
            println!("{}", line);
        }
    }
}

然后开始输入终端,按回车键,看看魔法发生。注意,这些二进制文件默认不是按行缓冲。

管道名称

pipe_name 参数可以有两种解析方式

  • 如果名称不包含正斜杠 / 或反斜杠 \ 字符,则将其视为 ipipe 管道名称。在 Windows 上表示为 "\\.\pipe\pipe_name",在 Unix 系统上表示为 /tmp/pipe_name
  • 如果名称包含斜杠,则将其视为字面路径。这意味着路径必须格式正确才能在适当的操作系统上工作。

依赖关系

~2MB
~38K SLoC