From c08295242387d35262926db806dd7c83ac90e019 Mon Sep 17 00:00:00 2001 From: Yves Goergen Date: Wed, 16 Feb 2011 16:01:38 -0600 Subject: [PATCH] Avoid tracebacks on disappearing processes --- smem | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/smem b/smem index 66e7a91..9e751f1 100755 --- a/smem +++ b/smem @@ -35,20 +35,36 @@ class procdata(object): def version(self): return self._readlines('version')[0] def pidname(self, pid): - l = self._read('%d/stat' % pid) - return l[l.find('(') + 1: l.find(')')] + try: + l = self._read('%d/stat' % pid) + return l[l.find('(') + 1: l.find(')')] + except: + return '?' def pidcmd(self, pid): - c = self._read('%s/cmdline' % pid)[:-1] - return c.replace('\0', ' ') + try: + c = self._read('%s/cmdline' % pid)[:-1] + return c.replace('\0', ' ') + except: + return '?' def piduser(self, pid): - return self._stat('%d/cmdline' % pid).st_uid + try: + return self._stat('%d/cmdline' % pid).st_uid + except: + return -1 def pidgroup(self, pid): - return self._stat('%d/cmdline' % pid).st_gid + try: + return self._stat('%d/cmdline' % pid).st_gid + except: + return -1 def username(self, uid): + if uid == -1: + return '?' if uid not in self._ucache: self._ucache[uid] = pwd.getpwuid(uid)[0] return self._ucache[uid] def groupname(self, gid): + if gid == -1: + return '?' if gid not in self._gcache: self._gcache[gid] = pwd.getgrgid(gid)[0] return self._gcache[gid]