[process][darwin][openbsd][freebsd] Fix #795 don't truncate process names to 16 characters

pull/796/head
Lomanic 6 years ago
parent fc7e5e7af6
commit 4f0e679e35

@ -8,6 +8,7 @@ import (
"encoding/binary" "encoding/binary"
"fmt" "fmt"
"os/exec" "os/exec"
"path/filepath"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@ -89,8 +90,24 @@ func (p *Process) NameWithContext(ctx context.Context) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
name := common.IntToString(k.Proc.P_comm[:])
return common.IntToString(k.Proc.P_comm[:]), nil if len(name) >= 15 {
cmdlineSlice, err := p.CmdlineSliceWithContext(ctx)
if err != nil {
return "", err
}
if len(cmdlineSlice) > 0 {
extendedName := filepath.Base(cmdlineSlice[0])
if strings.HasPrefix(extendedName, p.name) {
name = extendedName
} else {
name = cmdlineSlice[0]
}
}
}
return name, nil
} }
func (p *Process) Tgid() (int32, error) { func (p *Process) Tgid() (int32, error) {
return 0, common.ErrNotImplementedError return 0, common.ErrNotImplementedError

@ -7,6 +7,7 @@ import (
"context" "context"
"encoding/binary" "encoding/binary"
"os/exec" "os/exec"
"path/filepath"
"strconv" "strconv"
"strings" "strings"
@ -58,8 +59,24 @@ func (p *Process) NameWithContext(ctx context.Context) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
name := common.IntToString(k.Comm[:])
return common.IntToString(k.Comm[:]), nil if len(name) >= 15 {
cmdlineSlice, err := p.CmdlineSliceWithContext(ctx)
if err != nil {
return "", err
}
if len(cmdlineSlice) > 0 {
extendedName := filepath.Base(cmdlineSlice[0])
if strings.HasPrefix(extendedName, p.name) {
name = extendedName
} else {
name = cmdlineSlice[0]
}
}
}
return name, nil
} }
func (p *Process) Tgid() (int32, error) { func (p *Process) Tgid() (int32, error) {
return 0, common.ErrNotImplementedError return 0, common.ErrNotImplementedError

@ -8,6 +8,7 @@ import (
"context" "context"
"encoding/binary" "encoding/binary"
"os/exec" "os/exec"
"path/filepath"
"strconv" "strconv"
"strings" "strings"
"unsafe" "unsafe"
@ -61,8 +62,24 @@ func (p *Process) NameWithContext(ctx context.Context) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
name := common.IntToString(k.Comm[:])
return common.IntToString(k.Comm[:]), nil if len(name) >= 15 {
cmdlineSlice, err := p.CmdlineSliceWithContext(ctx)
if err != nil {
return "", err
}
if len(cmdlineSlice) > 0 {
extendedName := filepath.Base(cmdlineSlice[0])
if strings.HasPrefix(extendedName, p.name) {
name = extendedName
} else {
name = cmdlineSlice[0]
}
}
}
return name, nil
} }
func (p *Process) Tgid() (int32, error) { func (p *Process) Tgid() (int32, error) {
return 0, common.ErrNotImplementedError return 0, common.ErrNotImplementedError

Loading…
Cancel
Save