mirror of https://github.com/golang/go.git
parent
b0e1707f94
commit
4f06764109
|
|
@ -86,7 +86,9 @@ func Getppid() int { return syscall.Getppid() }
|
|||
// about the underlying operating system process.
|
||||
//
|
||||
// On Unix systems, FindProcess always succeeds and returns a Process
|
||||
// for the given pid, regardless of whether the process exists.
|
||||
// for the given pid, regardless of whether the process exists. To test whether
|
||||
// the process actually exists, see whether p.Signal(syscall.Signal(0)) reports
|
||||
// an error.
|
||||
func FindProcess(pid int) (*Process, error) {
|
||||
return findProcess(pid)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ package os_test
|
|||
import (
|
||||
"internal/testenv"
|
||||
. "os"
|
||||
"syscall"
|
||||
"testing"
|
||||
)
|
||||
|
||||
|
|
@ -25,3 +26,20 @@ func TestErrProcessDone(t *testing.T) {
|
|||
t.Errorf("got %v want %v", got, ErrProcessDone)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUNIXProcessAlive(t *testing.T) {
|
||||
testenv.MustHaveGoBuild(t)
|
||||
t.Parallel()
|
||||
|
||||
p, err := StartProcess(testenv.GoToolPath(t), []string{"sleep", "1"}, &ProcAttr{})
|
||||
if err != nil {
|
||||
t.Skipf("starting test process: %v", err)
|
||||
}
|
||||
defer p.Kill()
|
||||
|
||||
proc, _ := FindProcess(p.Pid)
|
||||
err = proc.Signal(syscall.Signal(0))
|
||||
if err != nil {
|
||||
t.Errorf("OS reported error for running process: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue