From 155e21cc7f37ade106171ac53fd6826869811001 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Thu, 6 Oct 2011 11:00:02 -0700 Subject: exec: add Command.ExtraFiles Allows passing extra fds to the child process. Fixes #2329 R=rsc, dsymonds CC=golang-dev https://golang.org/cl/5162050 --- src/pkg/exec/exec.go | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/pkg/exec/exec.go') diff --git a/src/pkg/exec/exec.go b/src/pkg/exec/exec.go index 3b20f2008c..aaad50846e 100644 --- a/src/pkg/exec/exec.go +++ b/src/pkg/exec/exec.go @@ -63,6 +63,11 @@ type Cmd struct { Stdout io.Writer Stderr io.Writer + // ExtraFiles specifies additional open files to be inherited by the + // new process. It does not include standard input, standard output, or + // standard error. If non-nil, entry i becomes file descriptor 3+i. + ExtraFiles []*os.File + // SysProcAttr holds optional, operating system-specific attributes. // Run passes it to os.StartProcess as the os.ProcAttr's Sys field. SysProcAttr *syscall.SysProcAttr @@ -224,6 +229,7 @@ func (c *Cmd) Start() os.Error { } c.childFiles = append(c.childFiles, fd) } + c.childFiles = append(c.childFiles, c.ExtraFiles...) var err os.Error c.Process, err = os.StartProcess(c.Path, c.argv(), &os.ProcAttr{ -- cgit v1.3