syscall: implement Pipe2 on Linux and use it in ForkExec

Fixes #2656.

R=golang-dev, bradfitz, iant, minux.ma
CC=golang-dev
https://golang.org/cl/7062057
This commit is contained in:
Georg Reinke 2013-01-10 17:04:55 -08:00 committed by Ian Lance Taylor
parent 6e981c181c
commit e32d1154ec
7 changed files with 74 additions and 7 deletions

View file

@ -221,3 +221,17 @@ childerror:
// and this shuts up the compiler.
panic("unreached")
}
// Try to open a pipe with O_CLOEXEC set on both file descriptors.
func forkExecPipe(p []int) error {
err := Pipe(p)
if err != nil {
return err
}
_, err = fcntl(p[0], F_SETFD, FD_CLOEXEC)
if err != nil {
return err
}
_, err = fcntl(p[1], F_SETFD, FD_CLOEXEC)
return err
}