#linux #syscalls #clone

clone3

Rust 对 clone3 Linux 系统调用的绑定

5 个版本

0.2.3 2022 年 12 月 7 日
0.2.2 2022 年 7 月 8 日
0.2.1 2022 年 7 月 7 日
0.2.0 2021 年 1 月 12 日
0.1.0 2021 年 1 月 10 日

#573 in Unix API

Download history 200/week @ 2024-03-14 195/week @ 2024-03-21 267/week @ 2024-03-28 439/week @ 2024-04-04 445/week @ 2024-04-11 543/week @ 2024-04-18 698/week @ 2024-04-25 650/week @ 2024-05-02 556/week @ 2024-05-09 735/week @ 2024-05-16 483/week @ 2024-05-23 584/week @ 2024-05-30 635/week @ 2024-06-06 766/week @ 2024-06-13 878/week @ 2024-06-20 491/week @ 2024-06-27

2,839 每月下载量

MIT 许可证

17KB
348 行代码(不包括注释)

crates.io, docs.rs

clone3

Rust 对 clone3 Linux 系统调用的绑定。

开发

目前我们提供的绑定是 unsafe 的。我们可以考虑在 API 的一个受限制子集上创建一个 safe 包装器。


lib.rs:

clone3 Linux 系统调用的绑定。

有关更多信息,请参阅 clone3 手册页

这是一个复杂且通常不安全的操作。用户必须理解文档才能安全且正确地使用它。

示例

use clone3::Clone3;

let mut pidfd = -1;
let mut clone3 = Clone3::default();
clone3.flag_pidfd(&mut pidfd);

match unsafe { clone3.call() }.unwrap() {
    0 => println!("i am the child"),
    child => println!("i am the parent, my child has pid {} and my pidfd is {}", child, pidfd),
}

特性

clone3 API 可以在 Linux 内核版本之间以向后兼容的方式更改。此软件包通过 Cargo 特性(如 linux_5-5linux_5-7)支持选择目标版本。默认值为最新内核版本。未指定 linux 特性对应于初始 clone3 API。

依赖关系

~4–6MB
~114K SLoC