17 个版本
0.2.13 | 2024 年 3 月 12 日 |
---|---|
0.2.10 | 2022 年 6 月 24 日 |
0.2.7 | 2022 年 2 月 15 日 |
0.2.4 | 2021 年 12 月 30 日 |
0.1.3 | 2020 年 5 月 30 日 |
#100 in Unix API
3,240 个月下载量
在 5 个 crate 中使用 (4 直接)
185KB
5K SLoC
Unix API
该 crate 包含围绕 Unix API 的安全包装器。
支持的目标
如果通过 CI 对该 crate 进行测试,则支持该目标。
以下目标得到支持
- x86_64-unknown-linux-gnu (glibc >= 2.23)
- x86_64-unknown-linux-musl (musl >= 1.1.19)
- x86_64-unknown-freebsd (12)
- x86_64-unknown-openbsd (6.7)
- x86_64-apple-darwin (10.15)
此 crate 包含很少的架构特定代码。因此,其他架构(arm、aarch64 等)也可能工作。
未来更改
此 crate 完全支持将数据读取到未初始化的缓冲区中,但当相同的功能在 libstd 中稳定时,API 很可能发生变化。
与其他 crate 的比较
libc
此 crate 基于 libc crate,并在可能的情况下使用其原始 OS API 的声明。此 crate 认为自己是 libc 的下一步:它安全地包装原始 OS 函数,但做得很少。整数参数仍然是整数参数,在套接字上操作的功能接受套接字文件描述符作为原始整数,没有套接字包装器类型等。
同时,此 crate 提供了必要的工具,以便使其从 Rust 中使用起来与从 C 中使用原始 API 一样容易。例如,以下所有内容都只需按原样工作
open("./file", c::O_RDWR, 0);
open(b"./file", c::O_RDWR, 0);
open(CStr::from_ptr(p), c::O_RDWR, 0);
open(Path::new("./file"), c::O_RDWR, 0);
有关更多详细信息,请参阅 crate 文档。
nix
- nix 使用嵌套模块结构。 uapi 在 crate 根目录中导出所有 API。
- nix I/O 在
[u8]
上工作。 uapi I/O 在[MaybeUninit<u8>]
上工作。 - nix 使用枚举和位标志作为整数/标志参数。 uapi 使用纯整数。
- nix 使用在包装器类型上声明的方法定义 API。 uapi 除非这样做不安全,否则使用自由函数。
- nix 使用枚举来表示某些通用 OS API(例如控制消息)产生和消耗的值。 uapi 使用不限制可以使用类型的通用函数。
许可证
此项目根据您选择的以下许可证进行许可:
- Apache 许可证第 2 版
- MIT 许可证
任选其一。
依赖关系
~4–5.5MB
~106K SLoC