#!/usr/bin/env python # (c) December 2007 Thomas Guettler http://www.thomas-guettler.de/ # Read signal masks from /proc/PID/stat an print it in human readable format # I guess this script will run only on linux. # This script is in the public domain import sys import types import signal def usage(): print '''Usage: %s PID1 [PID2 ...] Read /proc/PID/stat Print signal info in human readable form''' def signal2name(sigint): assert type(sigint)==types.IntType for key, v in signal.__dict__.items(): if not key.startswith("SIG"): continue if v==sigint: return key return str(sigint) def main(): if len(sys.argv)==1 or sys.argv[1].startswith("-"): usage() sys.exit(1) for pid in sys.argv[1:]: stat=open('/proc/%s/stat' % pid).read().split() i=29 for name in ['pending', 'blocked', 'ignore', 'caught']: i+=1 mask=int(stat[i]) print name, mask for bit in range(64): if mask & (1L << bit): print signal2name(bit+1) if __name__=='__main__': main()