12个稳定版本
2.2.1 | 2024年7月21日 |
---|---|
2.1.1 | 2024年5月23日 |
1.2.1 | 2022年11月5日 |
1.1.1 | 2021年3月5日 |
0.2.0 | 2020年8月20日 |
#22 in Unix API
每月72,426次下载
在 43 个crate(27个直接) 中使用
335KB
8K SLoC
为Rust程序提供进程间通信工具包,旨在尽可能多地暴露平台特定的功能,同时保持所有平台的统一接口,并鼓励编写可移植、正确的代码。
进程间通信原语
Interprocess提供特定于OS的IPC接口和它们的跨平台抽象。
跨平台IPC API
- 本地套接字 – 类似于TCP套接字,但根据操作系统使用文件系统或命名空间路径而不是localhost上的端口,完全绕过网络栈;在Windows上使用命名管道实现,在Unix上使用Unix域套接字
特定于平台,但在Unix-like系统和Windows上都存在
- 匿名管道 – 用于单向私下通信的匿名文件样对象,通常用于在子进程和父进程之间通信
仅限Unix
- FIFO文件 – 一种特殊的文件类型,类似于匿名管道,但存在于文件系统中,通常被称为“命名管道”,但与Windows命名管道完全不同
- Unix域套接字 – Interprocess不再提供这些,因为它们在标准库中已经存在;然而,它们作为本地套接字公开
仅限Windows
- 命名管道 – 类似于Unix域套接字,使用单独的命名空间而不是驱动器路径
异步I/O
目前仅支持Tokio用于本地套接字、Unix域套接字和Windows命名管道。计划支持async-std
。
平台支持
进程间通信支持Windows和所有通用类Unix系统。此外,在选定的系统上支持平台特定的扩展。这些扩展的策略是将它们放在 #[cfg]
门后面,并且只在支持的平台上进行暴露,在没有任何支持这些特性的平台上产生编译错误而不是运行时错误。
Interprocess提供了四个级别的支持(不称为层级以避免与Rust目标层级混淆,因为它们的工作方式完全不同)。平台被降级将是一个破坏性变化,尽管升级明显可以发生在次要或补丁版本中。
显式支持
此级别支持的操作系统的列表: Windows、Linux、macOS
- Interprocess保证编译并成功运行所有测试——如果它不能这样做,将是一个关键错误
- CI(目前由GitHub Actions提供),在这些所有平台上运行,如果任何系统出现问题,将显示一个难看的红色徽章
- 某些带有
#[cfg]
的平台特定功能以稳定公开API的形式得到支持
无CI的显式支持
此级别支持的操作系统的列表: FreeBSD
- 预计Interprocess可以编译并成功运行所有测试——如果它不能这样做,将是一个错误
- 在每次发布之前通常会在本地虚拟机上手动进行测试;CI不提供,仅因为GitHub Actions自私地忽略了这些美好的系统
- 某些带有
#[cfg]
的平台特定功能以稳定公开API的形式得到支持
关联支持
此级别支持的操作系统的列表: Dragonfly BSD、OpenBSD、NetBSD、Redox、Android、Fuchsia、iOS、tvOS、watchOS
- 预计Interprocess可以编译并成功运行所有测试——如果它不能这样做,将是一个错误
- 没有进行手动测试,CI也不可用,因为GitHub Actions不提供它
- 某些来自其他平台的带有
#[cfg]
的平台特定功能,因为它们在这里的行为与在支持级别更高的操作系统上的行为相同,因此使用稳定公开API得到支持
假定支持
此级别支持的操作系统的列表:POSIX兼容的 #[cfg(unix)]
系统,不包括上述列表,对于这些系统,libc
库可以编译
- 预计Interprocess可以编译并成功运行所有测试——如果它不能这样做,将是一个错误
- 由于此级别包含几乎无限数量的系统,因此不存在手动测试或CI
功能门
tokio
,默认关闭 – 启用对由Tokio支持的效率高的异步IPC的支持。
许可证
此crate,以及对其所做的所有社区贡献,都采用MIT 和 Apache 2.0 许可。
依赖关系
~0–10MB
~84K SLoC