summaryrefslogtreecommitdiff
path: root/process/process.go
diff options
context:
space:
mode:
Diffstat (limited to 'process/process.go')
-rw-r--r--process/process.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/process/process.go b/process/process.go
new file mode 100644
index 0000000..4420b44
--- /dev/null
+++ b/process/process.go
@@ -0,0 +1,35 @@
+package process
+
+import (
+ "fmt"
+ "io/ioutil"
+ "log"
+ "regexp"
+ "strconv"
+)
+
+type Process struct {
+ Pid int
+ Cmdline string
+}
+
+func Gather(res chan<- Process) {
+ re, _ := regexp.Compile("^[0-9]+$")
+
+ dir, err := ioutil.ReadDir("/proc/")
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ for _, direntry := range dir {
+ name := direntry.Name()
+ if re.MatchString(name) {
+ pid, _ := strconv.Atoi(name)
+ bytes, err := ioutil.ReadFile(fmt.Sprintf("/proc/%d/cmdline", pid))
+ if err != nil {
+ log.Fatal(err)
+ }
+ res <- Process{Pid: pid, Cmdline: string(bytes)}
+ }
+ }
+}