NewBidirectionalPipe creates a new BidirectionalPipe from the given file descriptors.
(readFd, writeFd uintptr)
| 20 | // NewBidirectionalPipe creates a new BidirectionalPipe from the given file |
| 21 | // descriptors. |
| 22 | func NewBidirectionalPipe(readFd, writeFd uintptr) (BidirectionalPipe, error) { |
| 23 | read := os.NewFile(readFd, "pipe_read") |
| 24 | _, err := read.Stat() |
| 25 | if err != nil { |
| 26 | return BidirectionalPipe{}, xerrors.Errorf("stat pipe_read (fd=%v): %w", readFd, err) |
| 27 | } |
| 28 | write := os.NewFile(writeFd, "pipe_write") |
| 29 | _, err = write.Stat() |
| 30 | if err != nil { |
| 31 | return BidirectionalPipe{}, xerrors.Errorf("stat pipe_write (fd=%v): %w", writeFd, err) |
| 32 | } |
| 33 | return BidirectionalPipe{ |
| 34 | read: read, |
| 35 | write: write, |
| 36 | }, nil |
| 37 | } |
| 38 | |
| 39 | // Read implements io.Reader. Data is read from the read pipe. |
| 40 | func (b BidirectionalPipe) Read(p []byte) (int, error) { |
no test coverage detected