#共享内存 #进程间通信 #文件描述符 #memfd #shm #shm-anon #linux-kernel

shmemfdrs

在Unix平台上使用memfd/SHM_ANON/shm_open创建匿名共享内存文件描述符以进行进程间通信

5个版本

0.1.4 2022年10月1日
0.1.3 2022年8月21日
0.1.2 2022年4月7日
0.1.1 2018年6月9日
0.1.0 2017年12月9日

#827 in Unix API

Download history 231/week @ 2024-03-11 67/week @ 2024-03-18 57/week @ 2024-03-25 67/week @ 2024-04-01 46/week @ 2024-04-08 31/week @ 2024-04-15 24/week @ 2024-04-22 22/week @ 2024-04-29 18/week @ 2024-05-06 23/week @ 2024-05-13 9/week @ 2024-05-20 18/week @ 2024-05-27 7/week @ 2024-06-03 17/week @ 2024-06-10 15/week @ 2024-06-17 12/week @ 2024-06-24

每月下载量 55次
用于4个crate(3个直接使用)

MIT/Apache

8KB
50 代码行数(不含注释)

crates.io

shmemfdrs

这个小巧的crate提供了一个函数,用于创建匿名共享内存文件描述符以进行进程间通信,使用最佳平台特定方法

  • 在Linux上,除非禁用了memfd Cargo功能:memfd(需要内核>= 3.17)
  • 在FreeBSD上:shm_open(SHM_ANON)
  • 否则:使用带名称的shm_open,立即取消链接

memfdSHM_ANON实际上从开始就是匿名的,即它们根本不需要访问文件系统,因此与像Capsicum这样的进程沙盒很好地工作。(memfd实际上使用了提供的name,但仅用于调试目的。)

使用方法

此crate仅导出一个函数

fn create_shmem<T: AsRef<CStr>>(name: T, length: usize) -> c_int

应该很容易理解 :)

名称应从/开始,不应很长(最大255个字符)。

贡献

请随意提交pull请求!

通过参与此项目,您同意遵守贡献者行为准则

许可证

根据Apache License,版本2.0 < LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0 > 或MIT许可证 < LICENSE-MIT 或 https://opensource.org/licenses/MIT > 许可,任选其一。

依赖

~43KB