43 个版本
新 0.11.0 | 2024 年 8 月 19 日 |
---|---|
0.10.2 | 2023 年 7 月 27 日 |
0.10.1 | 2023 年 6 月 7 日 |
0.10.0 | 2021 年 12 月 7 日 |
0.1.0 | 2014 年 12 月 22 日 |
#16 in 文件系统
1,277,306 每月下载量
用于 1,257 个 Crates(直接使用 61 个)
61KB
716 代码行
inotify-rs
Rust 编程语言的 inotify 惯用封装。
extern crate inotify;
use std::env;
use inotify::{
EventMask,
WatchMask,
Inotify,
};
fn main() {
let mut inotify = Inotify::init()
.expect("Failed to initialize inotify");
let current_dir = env::current_dir()
.expect("Failed to determine current directory");
inotify
.watches()
.add(
current_dir,
WatchMask::MODIFY | WatchMask::CREATE | WatchMask::DELETE,
)
.expect("Failed to add inotify watch");
println!("Watching current directory for activity...");
let mut buffer = [0u8; 4096];
loop {
let events = inotify
.read_events_blocking(&mut buffer)
.expect("Failed to read inotify events");
for event in events {
if event.mask.contains(EventMask::CREATE) {
if event.mask.contains(EventMask::ISDIR) {
println!("Directory created: {:?}", event.name);
} else {
println!("File created: {:?}", event.name);
}
} else if event.mask.contains(EventMask::DELETE) {
if event.mask.contains(EventMask::ISDIR) {
println!("Directory deleted: {:?}", event.name);
} else {
println!("File deleted: {:?}", event.name);
}
} else if event.mask.contains(EventMask::MODIFY) {
if event.mask.contains(EventMask::ISDIR) {
println!("Directory modified: {:?}", event.name);
} else {
println!("File modified: {:?}", event.name);
}
}
}
}
}
用法
在 Cargo.toml
中包含它
[dependencies]
inotify = "0.11"
请参考 文档 和上面的示例,了解如何在代码中使用它。
请注意,inotify-rs 是对原始 inotify API 的相对低级封装。当然,它也是 Linux 特有的,就像 inotify 一样。如果您正在寻找一个更高级且平台无关的文件系统通知库,请考虑 notify。
如果您需要以这种方式访问 inotify,而该封装不支持,请考虑使用 inotify-sys。
文档
inotify-rs 最重要的文档是 API 参考文档,因为它包含了对完整 API 的详细描述以及示例。
更多示例可以在 示例目录 中找到。
请务必阅读 inotify 手册页。inotify 的使用可能很难正确,而此低级封装不会保护您免受所有错误的侵害。
许可证
版权所有(C)Hanno Braun 及其贡献者
在此特此授予任何人使用、复制、修改和/或出于任何目的分发本软件的权利,无论是否收费,前提是上述版权声明和本许可声明出现在所有副本中。
本软件按“原样”提供,作者放弃与该软件相关的所有保证,包括所有默示的适销性和适用性保证。在任何情况下,作者均不对任何特殊、直接、间接或后果性损害或任何因使用或性能本软件而产生的任何损害(无论基于合同、疏忽或其他侵权行为)负责,包括但不限于使用、数据或利润的损失。
依赖项
~0.1–8.5MB
~62K SLoC