21 个发布版本
0.1.21 | 2021 年 4 月 16 日 |
---|---|
0.1.20 | 2021 年 3 月 19 日 |
0.1.19 | 2020 年 6 月 10 日 |
0.1.18 | 2019 年 8 月 5 日 |
0.1.2 | 2016 年 12 月 28 日 |
#407 in 文件系统
2,164 每月下载量
用于 23 个 Crates (11 直接)
39KB
741 行代码
Openat Crate
Status: Beta
到 openat
,symlinkat
和 *at
系列中其他函数的接口。
依赖 Crates
此 Crate 是底层系统调用的薄包装器。您可能会在 openat-ext 中找到有用的扩展方法。
许可
根据以下之一许可
- Apache 许可证,版本 2.0,(./LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(./LICENSE-MIT 或 http://opensource.org/licenses/MIT)任选其一。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交以包含在本作品中的任何贡献都应以上述方式双许可,而不附加任何额外条款或条件。
lib.rs
:
相对于文件描述符处理文件
这里的主要概念是一个 Dir
,它包含 O_PATH
文件描述符,您可以使用以下方式创建它:
Dir::open("/some/path")
-- 以文件描述符的形式打开此目录Dir::from_raw_fd(fd)
-- 使用在其他地方提供的文件描述符
注意在打开文件描述符后,无论它被移动或挂载(使用 pivot_root
或 mount --move
)到何处,都指向相同的目录。它也可以被卸载或超出 chroot,您仍然可以访问相对于它的文件。
注2:构造函数 Dir :: cwd()
已弃用,建议使用 Dir :: open("""")
代替。
注3:某些操作系统(例如,macOS)不提供 O_PATH
,在这种情况下,文件描述符为常规类型。
大多数其他操作都是在 Dir
对象上执行,并且相对于它执行
Dir::list_dir()
Dir::sub_dir()
Dir::read_link()
Dir::open_file()
Dir::create_file()
Dir::update_file()
Dir::create_dir()
Dir::symlink()
Dir::local_rename()
期望目录相对路径的函数接受传统的路径类对象,如 Path、PathBuf 和 &str,以及来自 list_dir()
返回的 Entry
类型。后者更快,因为底层系统调用需要 CString
,我们将其保留在条目中。
请注意,如果传递给 dir 任何方法的路径是绝对路径,则忽略 Dir 文件描述符。
此外,尽管 dir 的所有方法都接受任何路径,但如果您想防止某些符号链接攻击和竞态条件,则应仅使用单组件路径。即一次打开链的一部分。