Crate interprocess[][src]

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.


The following interprocess communication primitives are implemented:

  • Unnamed pipes — anonymous file-like objects for communicating privately in one direction, most commonly used to communicate between a child process and its parent
  • FIFO files — Unix-specific 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 — Unix-specific socket type which is extremely similar to normal network sockets but uses filesystem paths instead, with the optional Linux feature allowing them to use a spearate namespace akin to Windows named pipes
  • Windows named pipes — Windows-specific named pipe interface closely resembling Unix domain sockets
  • Local sockets — platform independent interface utilizing named pipes on Windows and Unix domain sockets on Unix. Async support included!
  • Signals — Unix-specific signals, used to receive critical messages from the OS and other programs, as well as sending those messages


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.



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.


Non-blocking wrappers for blocking interprocess communication primitives.


Platform-specific functionality for various interprocess communication primitives.


Creation and usage of unnamed pipes.



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.



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