summaryrefslogtreecommitdiff
path: root/process
diff options
context:
space:
mode:
authorPaul Buetow (europa) <paul@buetow.org>2015-05-25 00:15:30 +0100
committerPaul Buetow (europa) <paul@buetow.org>2015-05-25 00:15:30 +0100
commit9b865d25ac5dde4045e3d3b6c4a333dfb51af7fc (patch)
treeb5404ee373c11f7568787f175ecbf2c3bc36d9bf /process
parentf6473fc7afd385b652e1ccdb745c43292f14a852 (diff)
do some clever stuff
Diffstat (limited to 'process')
-rw-r--r--process/process.go39
1 files changed, 28 insertions, 11 deletions
diff --git a/process/process.go b/process/process.go
index 7436d16..91f1f97 100644
--- a/process/process.go
+++ b/process/process.go
@@ -10,32 +10,49 @@ import (
)
type Process struct {
- Pid int
- Cmdline string
+ Pid int
+ Cmdline string
+ rawIo string
+ firstErr error
+}
+
+func newError() (Process, error) {
+ return Process{}, errors.New("Can not read process information")
}
func new(pidstr string) (Process, error) {
pid, _ := strconv.Atoi(pidstr)
- bytes, err := ioutil.ReadFile(fmt.Sprintf("/proc/%d/cmdline", pid))
- if err != nil {
- log.Fatal(err)
- }
- if len(bytes) > 0 {
- return Process{Pid: pid, Cmdline: string(bytes)}, nil
+ process := Process{Pid: pid}
+
+ process.gatherRaw(&process.Cmdline, "/proc/%d/cmdline")
+ process.gatherRaw(&process.rawIo, "/proc/%d/io")
+
+ return process, process.firstErr
+}
+
+func (self *Process) gatherRaw(what *string, pathf string) {
+ bytes, err := ioutil.ReadFile(fmt.Sprintf(pathf, self.Pid))
+ if err != nil && self.firstErr == nil {
+ self.firstErr = err
} else {
- return Process{}, errors.New("Can not read process information")
+ *what = string(bytes)
}
}
func (self *Process) String() string {
- str := "========================="
+ str := "=========================\n"
str = str + fmt.Sprintf("PID: %d\n", self.Pid)
- str = str + fmt.Sprintf("cmdline: %s\n", self.Cmdline)
+ str = str + fmt.Sprintf("Cmdline: %s\n", self.Cmdline)
+ str = str + fmt.Sprintf("rawIo: %s\n", self.rawIo)
return str
}
+func (self *Process) Print() {
+ fmt.Println(self)
+}
+
func Gather(processes chan<- Process) {
re, _ := regexp.Compile("^[0-9]+$")