code: func newPipe() (parent *os.File, child *os.File, err error) {
  	fds, err := unix.Socketpair(unix.AF_LOCAL, unix.SOCK_STREAM|unix.SOCK_CLOEXEC, 0)
  	if err != nil {
  		return nil, nil, err
  	}
  	return os.NewFile(uintptr(fds[1]), "parent"), os.NewFile(uintptr(fds[0]), "child"), nil
  }
docs: // newPipe creates a unix socket pair for communication