Source file
src/os/pipe_bsd.go
1
2
3
4
5
6
7 package os
8
9 import "syscall"
10
11
12
13 func Pipe() (r *File, w *File, err error) {
14 var p [2]int
15
16
17 syscall.ForkLock.RLock()
18 e := syscall.Pipe(p[0:])
19 if e != nil {
20 syscall.ForkLock.RUnlock()
21 return nil, nil, NewSyscallError("pipe", e)
22 }
23 syscall.CloseOnExec(p[0])
24 syscall.CloseOnExec(p[1])
25 syscall.ForkLock.RUnlock()
26
27 return newFile(uintptr(p[0]), "|0", kindPipe), newFile(uintptr(p[1]), "|1", kindPipe), nil
28 }
29
View as plain text