This crate implements a minimal abstraction over UNIX domain sockets for the purpose of IPC. It lets you send both file handles and rust objects between processes.
This uses serde to serialize data over unix sockets
via bincode. Thanks to the
Handle
abstraction you can also send any object
across that is convertable into a unix file handle.
```rust use std::env; use std::process; use unix_ipc::{channel, Bootstrapper, Receiver, Sender}; use serde::{Deserialize, Serialize};
const ENVVAR: &str = "PROCCONNECT_TO";
pub enum Task {
Sum(Vec
if let Ok(path) = env::var(ENVVAR) {
let receiver = Receiver::
let (tx, rx) = channel().unwrap();
bootstrapper.send(Task::Sum(vec![23, 42], tx)).unwrap();
println!("sum: {}", rx.recv().unwrap());
bootstrapper.send(Task::Shutdown).unwrap();
} ```
All features are enabled by default but a lot can be turned off to cut down on dependencies. With all default features enabled only the raw types are available.
serde
: enables serialization and deserialization.bootstrap
: adds the Bootstrapper
type.bootstrap-simple
: adds the default new
constructor to the
bootstrapper.License: MIT/Apache-2.0