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

Download history 12399/week @ 2024-05-04 11342/week @ 2024-05-11 12354/week @ 2024-05-18 13537/week @ 2024-05-25 16684/week @ 2024-06-01 13541/week @ 2024-06-08 14457/week @ 2024-06-15 14303/week @ 2024-06-22 12447/week @ 2024-06-29 13808/week @ 2024-07-06 15044/week @ 2024-07-13 16579/week @ 2024-07-20 16665/week @ 2024-07-27 19343/week @ 2024-08-03 18054/week @ 2024-08-10 15639/week @ 2024-08-17

每月72,426次下载
43 个crate(27个直接) 中使用

MIT/Apache

335KB
8K SLoC

Crates.io Docs.rs Build status maintenance-status Rust version: 1.75+

为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目标层级混淆,因为它们的工作方式完全不同)。平台被降级将是一个破坏性变化,尽管升级明显可以发生在次要或补丁版本中。

显式支持

此级别支持的操作系统的列表: WindowsLinuxmacOS

  • Interprocess保证编译并成功运行所有测试——如果它不能这样做,将是一个关键错误
  • CI(目前由GitHub Actions提供),在这些所有平台上运行,如果任何系统出现问题,将显示一个难看的红色徽章
  • 某些带有 #[cfg] 的平台特定功能以稳定公开API的形式得到支持
无CI的显式支持

此级别支持的操作系统的列表: FreeBSD

  • 预计Interprocess可以编译并成功运行所有测试——如果它不能这样做,将是一个错误
  • 在每次发布之前通常会在本地虚拟机上手动进行测试;CI不提供,仅因为GitHub Actions自私地忽略了这些美好的系统
  • 某些带有 #[cfg] 的平台特定功能以稳定公开API的形式得到支持
关联支持

此级别支持的操作系统的列表: Dragonfly BSDOpenBSDNetBSDRedoxAndroidFuchsiaiOStvOSwatchOS

  • 预计Interprocess可以编译并成功运行所有测试——如果它不能这样做,将是一个错误
  • 没有进行手动测试,CI也不可用,因为GitHub Actions不提供它
  • 某些来自其他平台的带有 #[cfg] 的平台特定功能,因为它们在这里的行为与在支持级别更高的操作系统上的行为相同,因此使用稳定公开API得到支持
假定支持

此级别支持的操作系统的列表:POSIX兼容的 #[cfg(unix)] 系统,不包括上述列表,对于这些系统,libc 库可以编译

  • 预计Interprocess可以编译并成功运行所有测试——如果它不能这样做,将是一个错误
  • 由于此级别包含几乎无限数量的系统,因此不存在手动测试或CI

功能门

  • tokio,默认关闭 – 启用对由Tokio支持的效率高的异步IPC的支持。

许可证

此crate,以及对其所做的所有社区贡献,都采用MITApache 2.0 许可。

依赖关系

~0–10MB
~84K SLoC