dope_sys/io/pipe.rs
1use std::os::fd;
2
3/// Creates two exclusively owned native pipe endpoints.
4pub trait Pipe {
5 fn open() -> Result<(fd::OwnedFd, fd::OwnedFd), Error>;
6 fn nonblocking() -> Result<(fd::OwnedFd, fd::OwnedFd), Error>;
7}
8
9#[derive(Clone, Copy, Debug, PartialEq, Eq)]
10#[repr(u8)]
11pub enum End {
12 Read,
13 Write,
14}
15
16#[derive(Clone, Copy, Debug, PartialEq, Eq)]
17pub enum Error {
18 Open(crate::Errno),
19 CloseOnExec { end: End, failure: crate::Cloexec },
20 Nonblocking { end: End, failure: crate::Nonblock },
21}