Crate interprocess

source ·
Expand description

Interprocess communication toolkit for Rust programs. The crate aims to expose as many platform-specific features as possible while maintaining a uniform interface for all platforms.

Features

Interprocess communication primitives

interprocess provides both OS-specific interfaces for IPC and cross-platform abstractions for them.

Cross-platform IPC APIs

  • Local sockets – similar to TCP sockets, but use filesystem or namespaced paths instead of ports on localhost, depending on the OS, bypassing the network stack entirely; implemented using named pipes on Windows and Unix domain sockets on Unix

Platform-specific, but present on both Unix-like systems and Windows

  • Unnamed pipes – anonymous file-like objects for communicating privately in one direction, most commonly used to communicate between a child process and its parent
  • Signals – C signals on Windows, POSIX signals on Unix-like OSes (deprecated)

Unix-only

  • FIFO files – special type of file which is similar to unnamed pipes but exists on the filesystem, often referred to as “named pipes” but completely different from Windows named pipes
  • Unix domain sockets – a type of socket which is built around the standard networking APIs but uses filesystem paths instead of ports on localhost, optionally using a spearate namespace on Linux akin to Windows named pipes

Windows-only

  • Named pipes – closely resembles Unix domain sockets, uses a separate namespace instead of on-drive paths

Asynchronous I/O

Currently, only Tokio for local sockets, Unix domain sockets and Windows named pipes is supported. Support for async-std is planned.

Feature gates

  • signals, on by default – enables support for POSIX signals and C signals. Pulls in additional dependencies.
  • tokio_support, off by default – enables support for Tokio-powered efficient asynchronous IPC. Cannot simply be named tokio because of Cargo limitations.
  • nonblocking, on by default – deprecated and will be removed, do not use.

License

This crate, along with all community contributions made to it, is dual-licensed under the terms of either the MIT license or the Apache 2.0 license.

Modules

Local sockets, an IPC primitive featuring a server and multiple clients connecting to that server using a filesystem path inside a special namespace, each having a private connection to that server.
nonblockingDeprecatednonblocking
Non-blocking wrappers for blocking interprocess communication primitives.
Platform-specific functionality for various interprocess communication primitives.
Creation and usage of unnamed pipes.

Structs

Marker error indicating that a datagram write operation failed because the amount of bytes which were actually written as reported by the operating system was smaller than the size of the message which was requested to be written.

Traits

Reading from named pipes with message boundaries reliably, without truncation.