Author: spadkins
Date: Mon Apr  9 11:38:37 2007
New Revision: 9387

Modified:
   p5ee/trunk/App-Context/lib/App/Context.pm

Log:
add get_proc_info() [Linux only right now]

Modified: p5ee/trunk/App-Context/lib/App/Context.pm
==============================================================================
--- p5ee/trunk/App-Context/lib/App/Context.pm   (original)
+++ p5ee/trunk/App-Context/lib/App/Context.pm   Mon Apr  9 11:38:37 2007
@@ -2585,5 +2585,56 @@
     return($info);
 }
 
+# /proc/$$/status
+# Name:   ksh
+# State:  S (sleeping)
+# Tgid:   29147
+# Pid:    29147
+# PPid:   29146
+# TracerPid:      0
+# Uid:    102     102     102     102
+# Gid:    205     205     205     205
+# FDSize: 32
+# Groups: 205 201 202 214 3000 203 217
+# VmSize:     1624 kB
+# VmLck:         0 kB
+# VmRSS:       608 kB
+# VmData:      124 kB
+# VmStk:        12 kB
+# VmExe:       176 kB
+# VmLib:      1292 kB
+# SigPnd: 0000000000000000
+# SigBlk: 0000000000000000
+# SigIgn: 8000000000380000
+# SigCgt: 0000000000016007
+# CapInh: 0000000000000000
+# CapPrm: 0000000000000000
+# CapEff: 0000000000000000
+
+sub get_proc_info {
+    my ($self, @pids) = @_;
+    @pids = ($$) if ($#pids == -1);
+    my ($pid, $proc);
+    my $procs = {};
+    foreach $pid (@pids) {
+        $proc = {};
+        $procs->{$pid} = $proc;
+        # print "FILE: /proc/$$/status\n";
+        if (open(main::FILE, "/proc/$$/status")) {
+            while (<main::FILE>) {
+                if (/^Vm([A-Za-z]+):\s*([0-9]+)/) {
+                    $proc->{lc($1)} = $2;
+                }
+            }
+            close(main::FILE);
+            $proc->{text} = $proc->{exe} + $proc->{lib};
+        }
+        else {
+            $self->log("ERROR: Can't open /proc/$$/status: $!");
+        }
+    }
+    return($procs);
+}
+
 1;
 

Reply via email to