aboutsummaryrefslogtreecommitdiff
path: root/src/syscall/exec_libc.go
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2020-04-23 21:15:03 -0700
committerIan Lance Taylor <iant@golang.org>2020-05-01 04:53:11 +0000
commit07cb63aae5629213a0f5c484a8d79ae4bc1026e6 (patch)
treec91cef0544f358eed3ac52a4f88a42ed3ace68b8 /src/syscall/exec_libc.go
parent45d288718d2b94b83cc546c1a2cd8fb6fe503138 (diff)
downloadgo-07cb63aae5629213a0f5c484a8d79ae4bc1026e6.tar.xz
syscall: document exact meaning of Ctty field
The Ctty field is a child descriptor number when Setctty is set, but a parent descriptor when Foreground is set. This is absurd but changing either behavior breaks existing programs. With this change we at least document how it works. For #29458 Change-Id: If9cf0a1a1e6ed0d4a4edae5043016d5b4ee3308b Reviewed-on: https://go-review.googlesource.com/c/go/+/229768 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Damien Neil <dneil@google.com>
Diffstat (limited to 'src/syscall/exec_libc.go')
-rw-r--r--src/syscall/exec_libc.go23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/syscall/exec_libc.go b/src/syscall/exec_libc.go
index 0133139000..3722858325 100644
--- a/src/syscall/exec_libc.go
+++ b/src/syscall/exec_libc.go
@@ -16,12 +16,23 @@ type SysProcAttr struct {
Chroot string // Chroot.
Credential *Credential // Credential.
Setsid bool // Create session.
- Setpgid bool // Set process group ID to Pgid, or, if Pgid == 0, to new pid.
- Setctty bool // Set controlling terminal to fd Ctty
- Noctty bool // Detach fd 0 from controlling terminal
- Ctty int // Controlling TTY fd
- Foreground bool // Place child's process group in foreground. (Implies Setpgid. Uses Ctty as fd of controlling TTY)
- Pgid int // Child's process group ID if Setpgid.
+ // Setpgid sets the process group ID of the child to Pgid,
+ // or, if Pgid == 0, to the new child's process ID.
+ Setpgid bool
+ // Setctty sets the controlling terminal of the child to
+ // file descriptor Ctty. Ctty must be a descriptor number
+ // in the child process: an index into ProcAttr.Files.
+ // This is only meaningful if Setsid is true.
+ Setctty bool
+ Noctty bool // Detach fd 0 from controlling terminal
+ Ctty int // Controlling TTY fd
+ // Foreground places the child process group in the foreground.
+ // This implies Setpgid. The Ctty field must be set to
+ // the descriptor of the controlling TTY.
+ // Unlike Setctty, in this case Ctty must be a descriptor
+ // number in the parent process.
+ Foreground bool
+ Pgid int // Child's process group ID if Setpgid.
}
// Implemented in runtime package.