2 # -*- coding: utf-8 -*-
7 class ProcessInfo(object):
13 processes
= [int(entry
)
14 for entry
in os
.listdir("/proc") if entry
.isdigit()]
20 f
= open("/proc/%s/stat" % pid
)
23 stat
= f
.read().split()
28 children
.setdefault(ppid
, []).append(pid
)
31 self
.children
= children
32 self
.commands
= commands
34 def all_children(self
, pid
):
35 cl
= self
.children
.get(pid
, [])[:]
37 cl
.extend(self
.children
.get(child_pid
, []))
40 def dump(self
, pid
, _depth
=0):
41 print " " * (_depth
* 2), pid
, self
.commands
[pid
]
42 for child_pid
in self
.children
.get(pid
, []):
43 self
.dump(child_pid
, _depth
+ 1)
47 path
= os
.readlink("/proc/%s/cwd" % pid
)
53 if __name__
== "__main__":
56 print pi
.all_children(4984)
58 print pi
.cwd(pi
.all_children(4984)[-1])