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}