• Russ Cox's avatar
    undo CL 131750044 / 2d6d44ceb80e · 2d53d6b5
    Russ Cox authored
    Breaks reading from stdin in parent after exec with SysProcAttr{Setpgid: true}.
    
    package main
    
    import (
            "fmt"
            "os"
            "os/exec"
            "syscall"
    )
    
    func main() {
            cmd := exec.Command("true")
            cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
            cmd.Run()
    
            fmt.Printf("Hit enter:")
            os.Stdin.Read(make([]byte, 100))
            fmt.Printf("Bye\n")
    }
    
    In go1.3, I type enter at the prompt and the program exits.
    With the CL being rolled back, the program wedges at the
    prompt.
    
    ««« original CL description
    syscall: SysProcAttr job control changes
    
    Making the child's process group the foreground process group and
    placing the child in a specific process group involves co-ordination
    between the parent and child that must be done post-fork but pre-exec.
    
    LGTM=iant
    R=golang-codereviews, gobot, iant, mikioh.mikioh
    CC=golang-codereviews
    https://golang.org/cl/131750044
    
    »»»
    
    LGTM=minux, dneil
    R=dneil, minux
    CC=golang-codereviews, iant, michael.p.macinnis
    https://golang.org/cl/174450043
    2d53d6b5
exec_linux.go 9.37 KB