diff options
author | Guido Günther <agx@sigxcpu.org> | 2014-01-07 18:42:07 +0100 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2014-01-07 18:42:07 +0100 |
commit | ca144c2dd9c1fa307c0197e5b710e9dff8ef313f (patch) | |
tree | c15ffa02a984e90d8f80e3a9cad4d91dc6516d6e | |
parent | 677ab398193b089260d6edafc35a032799893e92 (diff) | |
parent | c1eef79e20033fc3441d6c9c013cd96f5aebfbc2 (diff) |
Merge tag 'v0.0.3' into debian/master
whatmaps 0.0.3
-rwxr-xr-x | whatmaps | 34 |
1 files changed, 21 insertions, 13 deletions
@@ -23,6 +23,7 @@ import re import string import subprocess import sys +import errno from optparse import OptionParser try: import apt_pkg @@ -47,13 +48,12 @@ class Process(object): self.mapped = [] try: self.exe = os.readlink('/proc/%d/exe' % self.pid) + m = self.deleted_re.match(self.exe) + if m: + self.exe = m.group('exe') + logging.debug("Using deleted exe %s", self.exe) if not os.path.exists(self.exe): - m = self.deleted_re.match(self.exe) - if m: - self.exe = m.group('exe') - logging.debug("Using deleted exe %s", self.exe) - else: - logging.debug("%s doesn't exist", self.exe) + logging.debug("%s doesn't exist", self.exe) self.cmdline = open('/proc/%d/cmdline' % self.pid).read() except OSError: self.exe = None @@ -61,7 +61,13 @@ class Process(object): def _read_maps(self): """Read the SOs from /proc/<pid>/maps""" - for line in file('/proc/%d/maps' % self.pid): + try: + f = file('/proc/%d/maps' % self.pid) + except IOError as e: + # ignore killed process + if e.errno != errno.ENOENT: + raise + for line in f: try: so = line.split()[5].strip() self.mapped.append(so) @@ -419,12 +425,16 @@ def detect_distro(): if lsb_release: id = lsb_release.get_distro_information()['ID'] else: - lsb_cmd = subprocess.Popen(['lsb_release', '--id', '-s'], + try: + lsb_cmd = subprocess.Popen(['lsb_release', '--id', '-s'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - output = lsb_cmd.communicate()[0] - if not lsb_cmd.returncode: - id = output.strip() + output = lsb_cmd.communicate()[0] + if not lsb_cmd.returncode: + id = output.strip() + except OSError: + # id is None in this case + pass if id == DebianDistro.id: return DebianDistro @@ -455,8 +465,6 @@ def write_cmd_file(services, cmd_file, distro): def main(argv): shared_objects = [] - distro = detect_distro() - parser = OptionParser(usage='%prog [options] pkg1 [pkg2 pkg3 pkg4]') parser.add_option("--debug", action="store_true", dest="debug", default=False, help="enable debug output") |