diff --git a/internal/common/common_unix.go b/internal/common/common_unix.go index 1401626..6622eec 100644 --- a/internal/common/common_unix.go +++ b/internal/common/common_unix.go @@ -3,14 +3,11 @@ package common import ( - "errors" "os/exec" "strconv" "strings" ) -var ErrorNoChildren = errors.New("Process does not have children or does not exist") - func CallLsof(invoke Invoker, pid int32, args ...string) ([]string, error) { var cmd []string if pid == 0 { // will get from all processes. @@ -51,7 +48,7 @@ func CallPgrep(invoke Invoker, pid int32) ([]int32, error) { } out, err := invoke.Command(pgrep, cmd...) if err != nil { - return []int32{}, ErrorNoChildren + return []int32{}, err } lines := strings.Split(string(out), "\n") ret := make([]int32, 0, len(lines)) diff --git a/process/process_linux.go b/process/process_linux.go index 9e3a87e..deaf285 100644 --- a/process/process_linux.go +++ b/process/process_linux.go @@ -19,7 +19,7 @@ import ( "github.com/shirou/gopsutil/net" ) -var ErrorNoChildren = errors.New("Process does not have children") +var ErrorNoChildren = errors.New("process does not have children") const ( PrioProcess = 0 // linux/resource.h @@ -208,7 +208,7 @@ func (p *Process) MemoryPercent() (float32, error) { func (p *Process) Children() ([]*Process, error) { pids, err := common.CallPgrep(invoke, p.Pid) if err != nil { - if err == common.ErrorNoChildren { + if pids == nil || len(pids) == 0 { return nil, ErrorNoChildren } return nil, err