Process.Username method for posix-compliant OS

pull/12/head
Nikolay Sivko 11 years ago
parent 547d722aef
commit 2297579d67

@ -71,9 +71,6 @@ func (p *Process) Status() (string, error) {
return string(k.KiStat[:]), nil return string(k.KiStat[:]), nil
} }
func (p *Process) Username() (string, error) {
return "", NotImplementedError
}
func (p *Process) Uids() ([]int32, error) { func (p *Process) Uids() ([]int32, error) {
k, err := p.getKProc() k, err := p.getKProc()
if err != nil { if err != nil {

@ -69,9 +69,6 @@ func (p *Process) Status() (string, error) {
return string(k.KiStat[:]), nil return string(k.KiStat[:]), nil
} }
func (p *Process) Username() (string, error) {
return "", NotImplementedError
}
func (p *Process) Uids() ([]int32, error) { func (p *Process) Uids() ([]int32, error) {
k, err := p.getKProc() k, err := p.getKProc()
if err != nil { if err != nil {

@ -101,9 +101,6 @@ func (p *Process) Status() (string, error) {
} }
return status, nil return status, nil
} }
func (p *Process) Username() (string, error) {
return "", nil
}
func (p *Process) Uids() ([]int32, error) { func (p *Process) Uids() ([]int32, error) {
_, _, uids, _, _, _, err := p.fillFromStatus() _, _, uids, _, _, _, err := p.fillFromStatus()
if err != nil { if err != nil {

@ -4,6 +4,7 @@ package gopsutil
import ( import (
"os" "os"
"os/user"
"os/exec" "os/exec"
"strconv" "strconv"
"strings" "strings"
@ -85,3 +86,17 @@ func (p *Process) Terminate() error {
func (p *Process) Kill() error { func (p *Process) Kill() error {
return p.SendSignal(syscall.SIGKILL) return p.SendSignal(syscall.SIGKILL)
} }
func (p *Process) Username() (string, error) {
uids, err := p.Uids()
if err != nil {
return "", err
}
if len(uids) > 0 {
u, err := user.LookupId(strconv.Itoa(int(uids[0])))
if err != nil {
return "", err
}
return u.Username, nil
}
return "", nil
}

Loading…
Cancel
Save