1 // Copyright 2015 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
13 use sys
::fd
::FileDesc
;
17 ////////////////////////////////////////////////////////////////////////////////
19 ////////////////////////////////////////////////////////////////////////////////
21 pub struct AnonPipe(FileDesc
);
23 pub fn anon_pipe() -> io
::Result
<(AnonPipe
, AnonPipe
)> {
25 if unsafe { libc::pipe(fds.as_mut_ptr()) == 0 }
{
26 Ok((AnonPipe
::from_fd(fds
[0]), AnonPipe
::from_fd(fds
[1])))
28 Err(io
::Error
::last_os_error())
33 pub fn from_fd(fd
: libc
::c_int
) -> AnonPipe
{
34 let fd
= FileDesc
::new(fd
);
39 pub fn read(&self, buf
: &mut [u8]) -> io
::Result
<usize> {
43 pub fn write(&self, buf
: &[u8]) -> io
::Result
<usize> {
47 pub fn into_fd(self) -> FileDesc
{