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 文件系统

Download history 423/week @ 2024-03-13 333/week @ 2024-03-20 395/week @ 2024-03-27 424/week @ 2024-04-03 374/week @ 2024-04-10 449/week @ 2024-04-17 566/week @ 2024-04-24 497/week @ 2024-05-01 413/week @ 2024-05-08 450/week @ 2024-05-15 648/week @ 2024-05-22 361/week @ 2024-05-29 508/week @ 2024-06-05 479/week @ 2024-06-12 479/week @ 2024-06-19 609/week @ 2024-06-26

2,164 每月下载量
用于 23 个 Crates (11 直接)

MIT/Apache

39KB
741 行代码

Openat Crate

Status: Beta

文档 | Github | Crate

openatsymlinkat*at 系列中其他函数的接口。

依赖 Crates

此 Crate 是底层系统调用的薄包装器。您可能会在 openat-ext 中找到有用的扩展方法。

许可

根据以下之一许可

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交以包含在本作品中的任何贡献都应以上述方式双许可,而不附加任何额外条款或条件。


lib.rs:

相对于文件描述符处理文件

这里的主要概念是一个 Dir,它包含 O_PATH 文件描述符,您可以使用以下方式创建它:

  • Dir::open("/some/path") -- 以文件描述符的形式打开此目录
  • Dir::from_raw_fd(fd) -- 使用在其他地方提供的文件描述符

注意在打开文件描述符后,无论它被移动或挂载(使用 pivot_rootmount --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 的所有方法都接受任何路径,但如果您想防止某些符号链接攻击和竞态条件,则应仅使用单组件路径。即一次打开链的一部分。

依赖关系