| //! Adapted from: |
| //! - https://doc.rust-lang.org/src/std/sys/unix/pipe.rs.html |
| //! - https://doc.rust-lang.org/src/std/sys/unix/fd.rs.html#385 |
| //! - https://github.com/rust-lang/rust/blob/master/library/std/src/sys/mod.rs#L57 |
| //! - https://github.com/oconnor663/os_pipe.rs |
| use std::fs::File; |
| |
| /// Open a new pipe and return a pair of [`File`] objects for the reader and writer. |
| /// |
| /// This corresponds to the `pipe2` library call on Posix and the |
| /// `CreatePipe` library call on Windows (though these implementation |
| /// details might change). These pipes are non-inheritable, so new child |
| /// processes won't receive a copy of them unless they're explicitly |
| /// passed as stdin/stdout/stderr. |
| pub fn pipe() -> std::io::Result<(File, File)> { |
| sys::pipe() |
| } |
| |
| #[cfg(unix)] |
| #[path = "os_pipe/unix.rs"] |
| mod sys; |
| |
| #[cfg(windows)] |
| #[path = "os_pipe/windows.rs"] |
| mod sys; |
| |
| #[cfg(all(not(unix), not(windows)))] |
| compile_error!("Only unix and windows support os_pipe!"); |