30 lines
776 B
Rust
30 lines
776 B
Rust
use std::{fs::File, io, thread, time::Duration};
|
|
|
|
use inotify::{Inotify, StreamExt, WatchMask};
|
|
use tempfile::TempDir;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<(), io::Error> {
|
|
let inotify = Inotify::init().expect("Failed to initialize inotify");
|
|
|
|
let dir = TempDir::new()?;
|
|
|
|
inotify
|
|
.watches()
|
|
.add(dir.path(), WatchMask::CREATE | WatchMask::MODIFY)?;
|
|
|
|
thread::spawn::<_, Result<(), io::Error>>(move || loop {
|
|
File::create(dir.path().join("file"))?;
|
|
thread::sleep(Duration::from_millis(500));
|
|
});
|
|
|
|
let mut buffer = [0; 1024];
|
|
let mut stream = inotify.into_event_stream(&mut buffer)?;
|
|
|
|
while let Some(event_or_error) = stream.next().await {
|
|
println!("event: {:?}", event_or_error?);
|
|
}
|
|
|
|
Ok(())
|
|
}
|