os: export ErrProcessDone variable in windows and plan9

Exposes ErrProcessDone variable in windows and plan9
also returns this error code instead of
errors.New("os: process already finished")

Fixes #42311

Change-Id: Ie807b6526e7b6c27636e6bffe5ff0c904b319be4
GitHub-Last-Rev: 2153e0d7020d8ee9e94087d02977ea049b7fd6a0
GitHub-Pull-Request: golang/go#42313
Reviewed-on: https://go-review.googlesource.com/c/go/+/266997
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Dmitri Shuralyov <dmitshur@golang.org>
diff --git a/src/os/exec.go b/src/os/exec.go
index cab6a73..edb773a 100644
--- a/src/os/exec.go
+++ b/src/os/exec.go
@@ -5,6 +5,7 @@
 package os
 
 import (
+	"errors"
 	"internal/testlog"
 	"runtime"
 	"sync"
@@ -13,6 +14,9 @@
 	"time"
 )
 
+// ErrProcessDone indicates a Process has finished.
+var ErrProcessDone = errors.New("os: process already finished")
+
 // Process stores the information about a process created by StartProcess.
 type Process struct {
 	Pid    int
diff --git a/src/os/exec_plan9.go b/src/os/exec_plan9.go
index ef8dad1..8580153 100644
--- a/src/os/exec_plan9.go
+++ b/src/os/exec_plan9.go
@@ -5,7 +5,6 @@
 package os
 
 import (
-	"errors"
 	"runtime"
 	"syscall"
 	"time"
@@ -52,7 +51,7 @@
 
 func (p *Process) signal(sig Signal) error {
 	if p.done() {
-		return errors.New("os: process already finished")
+		return ErrProcessDone
 	}
 	if e := p.writeProcFile("note", sig.String()); e != nil {
 		return NewSyscallError("signal", e)
diff --git a/src/os/exec_unix.go b/src/os/exec_unix.go
index 6240612..a1703a1 100644
--- a/src/os/exec_unix.go
+++ b/src/os/exec_unix.go
@@ -59,9 +59,6 @@
 	return ps, nil
 }
 
-// ErrProcessDone indicates a Process has finished.
-var ErrProcessDone = errors.New("os: process already finished")
-
 func (p *Process) signal(sig Signal) error {
 	if p.Pid == -1 {
 		return errors.New("os: process already released")
diff --git a/src/os/exec_windows.go b/src/os/exec_windows.go
index 24ddf89..5710401 100644
--- a/src/os/exec_windows.go
+++ b/src/os/exec_windows.go
@@ -61,7 +61,7 @@
 		return syscall.EINVAL
 	}
 	if p.done() {
-		return errors.New("os: process already finished")
+		return ErrProcessDone
 	}
 	if sig == Kill {
 		err := terminateProcess(p.Pid, 1)