]> Cypherpunks repositories - gostls13.git/commitdiff
os: Process.handle use syscall.Handle
authorWei Guangjing <vcc.163@gmail.com>
Thu, 2 Feb 2012 19:08:48 +0000 (14:08 -0500)
committerRuss Cox <rsc@golang.org>
Thu, 2 Feb 2012 19:08:48 +0000 (14:08 -0500)
R=golang-dev, alex.brainman, rsc
CC=golang-dev
https://golang.org/cl/5605050

src/pkg/os/exec.go
src/pkg/os/exec_windows.go
src/pkg/syscall/exec_plan9.go
src/pkg/syscall/exec_unix.go
src/pkg/syscall/exec_windows.go

index 33e223fd2963dcff621fcf8cc2365a33ff545153..6e0f168c76739513dd5b527fb802dada94e7b4ad 100644 (file)
@@ -12,11 +12,11 @@ import (
 // Process stores the information about a process created by StartProcess.
 type Process struct {
        Pid    int
-       handle int
+       handle uintptr
        done   bool // process has been successfuly waited on
 }
 
-func newProcess(pid, handle int) *Process {
+func newProcess(pid int, handle uintptr) *Process {
        p := &Process{Pid: pid, handle: handle}
        runtime.SetFinalizer(p, (*Process).Release)
        return p
index c7e25f9853fdc48033618cad8b882453067e1c2d..b89f91c197464ed28f90d547f1258e2a5eb06211 100644 (file)
@@ -46,14 +46,14 @@ func (p *Process) Signal(sig Signal) error {
 
 // Release releases any resources associated with the Process.
 func (p *Process) Release() error {
-       if p.handle == -1 {
+       if p.handle == uintptr(syscall.InvalidHandle) {
                return EINVAL
        }
        e := syscall.CloseHandle(syscall.Handle(p.handle))
        if e != nil {
                return NewSyscallError("CloseHandle", e)
        }
-       p.handle = -1
+       p.handle = uintptr(syscall.InvalidHandle)
        // no need for a finalizer anymore
        runtime.SetFinalizer(p, nil)
        return nil
@@ -66,7 +66,7 @@ func findProcess(pid int) (p *Process, err error) {
        if e != nil {
                return nil, NewSyscallError("OpenProcess", e)
        }
-       return newProcess(pid, int(h)), nil
+       return newProcess(pid, uintptr(h)), nil
 }
 
 func init() {
index 788666b2f2253712e8cff436dcfbbfd23d57bf0d..de6421c2391708a16d4266e32a8dc975fc6efd28 100644 (file)
@@ -483,7 +483,7 @@ func ForkExec(argv0 string, argv []string, attr *ProcAttr) (pid int, err error)
 }
 
 // StartProcess wraps ForkExec for package os.
-func StartProcess(argv0 string, argv []string, attr *ProcAttr) (pid, handle int, err error) {
+func StartProcess(argv0 string, argv []string, attr *ProcAttr) (pid int, handle uintptr, err error) {
        pid, err = forkExec(argv0, argv, attr)
        return pid, 0, err
 }
index ad3cf48c80eed85edaad74ab29a2d904522862ed..b70e1880b9623e40d1adf8aadc897a452b944226 100644 (file)
@@ -208,7 +208,7 @@ func ForkExec(argv0 string, argv []string, attr *ProcAttr) (pid int, err error)
 }
 
 // StartProcess wraps ForkExec for package os.
-func StartProcess(argv0 string, argv []string, attr *ProcAttr) (pid, handle int, err error) {
+func StartProcess(argv0 string, argv []string, attr *ProcAttr) (pid int, handle uintptr, err error) {
        pid, err = forkExec(argv0, argv, attr)
        return pid, 0, err
 }
index 2826e2f35a6ccdc0f1c3e7ae0475f8274a476da5..6cb25a7d00a9362bbfca5641eebe89bfca3b1042 100644 (file)
@@ -232,7 +232,7 @@ type SysProcAttr struct {
 var zeroProcAttr ProcAttr
 var zeroSysProcAttr SysProcAttr
 
-func StartProcess(argv0 string, argv []string, attr *ProcAttr) (pid, handle int, err error) {
+func StartProcess(argv0 string, argv []string, attr *ProcAttr) (pid int, handle uintptr, err error) {
        if len(argv0) == 0 {
                return 0, 0, EWINDOWS
        }
@@ -319,7 +319,7 @@ func StartProcess(argv0 string, argv []string, attr *ProcAttr) (pid, handle int,
        }
        defer CloseHandle(Handle(pi.Thread))
 
-       return int(pi.ProcessId), int(pi.Process), nil
+       return int(pi.ProcessId), uintptr(pi.Process), nil
 }
 
 func Exec(argv0 string, argv []string, envv []string) (err error) {