summaryrefslogtreecommitdiff
path: root/tests/specs/node/child_process_extra_pipes/test-pipe/src/main.rs
blob: acc034830f89382d5b64f90dd30903f9043dcbe2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use std::fs::File;
use std::io::prelude::*;
use std::os::fd::FromRawFd;

fn main() {
  #[cfg(unix)]
  {
    let mut pipe = unsafe { File::from_raw_fd(4) };

    let mut read = 0;
    let mut buf = [0u8; 1024];
    loop {
      if read > 4 {
        assert_eq!(&buf[..5], b"start");
        break;
      }
      match pipe.read(&mut buf) {
        Ok(n) => {
          read += n;
        }
        Ok(0) => {
          return;
        }
        Err(e) => {
          eprintln!("GOT ERROR: {e:?}");
        }
      }
    }
    pipe.write_all(b"hello world").unwrap();
  }
}