[−][src]Crate passfd
passfd
allows passing file descriptors between unrelated processes
using Unix sockets.
Both tokio 0.1 and 0.2 are supported with tokio_01
and tokio_02
features. Please note that these features rely on internal representation
of UnixStream and are unsafe.
Example usage
Process 1 (sender)
use passfd::FdPassingExt; use std::fs::File; use std::os::unix::io::AsRawFd; use std::os::unix::net::UnixListener; let file = File::open("/etc/passwd").unwrap(); let listener = UnixListener::bind("/tmp/test.sock").unwrap(); let (stream, _) = listener.accept().unwrap(); stream.send_fd(file.as_raw_fd()).unwrap();
Process 2 (receiver)
use passfd::FdPassingExt; use std::fs::File; use std::io::Read; use std::os::unix::io::FromRawFd; use std::os::unix::net::UnixStream; let stream = UnixStream::connect("/tmp/test.sock").unwrap(); let fd = stream.recv_fd().unwrap(); let mut file = unsafe { File::from_raw_fd(fd) }; let mut buf = String::new(); file.read_to_string(&mut buf).unwrap(); println!("{}", buf);
Traits
FdPassingExt | Main trait, extends UnixStream |