aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2014-01-07 18:42:07 +0100
committerGuido Günther <agx@sigxcpu.org>2014-01-07 18:42:07 +0100
commitca144c2dd9c1fa307c0197e5b710e9dff8ef313f (patch)
treec15ffa02a984e90d8f80e3a9cad4d91dc6516d6e
parent677ab398193b089260d6edafc35a032799893e92 (diff)
parentc1eef79e20033fc3441d6c9c013cd96f5aebfbc2 (diff)
Merge tag 'v0.0.3' into debian/master
whatmaps 0.0.3
-rwxr-xr-xwhatmaps34
1 files changed, 21 insertions, 13 deletions
diff --git a/whatmaps b/whatmaps
index 66bcf7c..d775098 100755
--- a/whatmaps
+++ b/whatmaps
@@ -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")