a69b3b0952
This update pulls in a commit adding support for Solaris.
36 lines
700 B
Go
36 lines
700 B
Go
// +build linux
|
|
|
|
package ps
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"strings"
|
|
)
|
|
|
|
// Refresh reloads all the data associated with this process.
|
|
func (p *UnixProcess) Refresh() error {
|
|
statPath := fmt.Sprintf("/proc/%d/stat", p.pid)
|
|
dataBytes, err := ioutil.ReadFile(statPath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// First, parse out the image name
|
|
data := string(dataBytes)
|
|
binStart := strings.IndexRune(data, '(') + 1
|
|
binEnd := strings.IndexRune(data[binStart:], ')')
|
|
p.binary = data[binStart : binStart+binEnd]
|
|
|
|
// Move past the image name and start parsing the rest
|
|
data = data[binStart+binEnd+2:]
|
|
_, err = fmt.Sscanf(data,
|
|
"%c %d %d %d",
|
|
&p.state,
|
|
&p.ppid,
|
|
&p.pgrp,
|
|
&p.sid)
|
|
|
|
return err
|
|
}
|