-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Open
Labels
DocumentationIssues describing a change to documentation.Issues describing a change to documentation.NeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.help wanted
Milestone
Description
What version of Go are you using (go version)?
go version go1.13.5 linux/amd64
Does this issue reproduce with the latest release?
Yes indeed.
What operating system and processor architecture are you using (go env)?
linux on amd64
What did you do?
Run the code below:
package main
import (
"fmt"
"os/exec"
"time"
)
func main() {
p := exec.Command("/usr/bin/yes")
if err := p.Start(); err != nil {
panic(err)
}
if err := p.Process.Kill(); err != nil {
panic(err)
}
fmt.Println("yes is now a zombie process")
time.Sleep(10 * time.Second)
if err := p.Process.Release(); err != nil {
panic(err)
}
fmt.Println("yes remains a zombie process")
time.Sleep(10 * time.Second)
}
What did you expect to see?
The documentation of Process.Release states:
Release releases any resources associated with the Process p, rendering it unusable in the future. Release only needs to be called if Wait is not.
It leaves a false impression that caller should invoke Release() if the caller does not intend to consume the process exit status - "... only needs to be called if Wait is not", even though doing so leaves a zombie process on the system.
Please clarify that Release() is not intended to replace Wait() at all in the function's description.
codenoid, baptistedonaux, henryhchchc, SimonTheLeg and guillermo
Metadata
Metadata
Assignees
Labels
DocumentationIssues describing a change to documentation.Issues describing a change to documentation.NeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.help wanted