read_print_repeat/
read_print_repeat.rs

1use async_std::{io, task};
2use unix_fifo_async::NamedPipePath;
3
4/// Repeatedly reads from `my_pipe` and prints the result.
5/// Usage:
6/// ```sh
7/// $ cargo run --example read_print_repeat &
8/// Waiting for message...
9/// $ printf "something" > my_pipe
10/// Received message: something
11/// Waiting for message...
12/// ```
13fn main() -> io::Result<()> {
14    task::block_on(async {
15        let pipe = NamedPipePath::new("./my_pipe");
16        let reader = pipe.open_read();
17        loop {
18            reader.ensure_pipe_exists().unwrap();
19            println!("Waiting for message...");
20            let next_msg = reader.read_string().await?;
21            println!("Received message: {}", next_msg);
22        }
23    })
24}