[EDIT] as asked here is what ps does for me : PID TTY TIME CMD 3796 pts/0 00:00:00 bash 4811 pts/0 00:00:00 ps I'm beginning with Graphviz and I would like to display the name of the running process. I got a script that display their number and I'm trying to add a label to each node. The problem is that only the last write label is displayed to the root node, how can I manage to write a label to every node ? #!/usr/bin/env python3 from subprocess import Popen, PIPE, call import re dot = open("psgraph.dot", "w") dot.write("digraph G {\n") p = Popen("ps -fe", shell=True, stdout=PIPE) psre = re.compile(r"\w+\s+(\d+)\s+(\d+)") p.stdout.readline() # ignore first line for line in p.stdout: match = psre.search(line.decode("utf-8")) if match: if int(match.group(2)) in (0, 2): continue dot.write (" {1} -> {0}\n".format(match.group(1), match.group(2))) for line in p.stdout: match = psre.search(line.decode("utf-8")) if match: if int(match.group(2)) in (0, 2): continue dot.write ("""1 [label="loop"]\n""") dot.write("""1 [label="laste write"]}\n""") dot.close() call("dot -Tpdf -O psgraph.dot", shell=True) Continue reading...