diff options
| author | Ian Lance Taylor <iant@golang.org> | 2020-04-23 21:15:03 -0700 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2020-05-01 04:53:11 +0000 |
| commit | 07cb63aae5629213a0f5c484a8d79ae4bc1026e6 (patch) | |
| tree | c91cef0544f358eed3ac52a4f88a42ed3ace68b8 /src/syscall/exec_bsd.go | |
| parent | 45d288718d2b94b83cc546c1a2cd8fb6fe503138 (diff) | |
| download | go-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_bsd.go')
| -rw-r--r-- | src/syscall/exec_bsd.go | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/syscall/exec_bsd.go b/src/syscall/exec_bsd.go index 30b88eba7a..af6c836961 100644 --- a/src/syscall/exec_bsd.go +++ b/src/syscall/exec_bsd.go @@ -15,12 +15,23 @@ type SysProcAttr struct { Credential *Credential // Credential. Ptrace bool // Enable tracing. 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. |
