#!/bin/env python import sys, signal def dec2bin(N): binary = '' while N: N, r = divmod(N,2) binary = str(r) + binary return binary def sigmask(binary): """Take a string representation of a binary number and return the signals associated with each bit. E.g. '10101' => ['SIGHUP','SIGQUIT','SIGTRAP'] This is because SIGHUP is 1, SIGQUIT is 3 and SIGTRAP is 5 """ sigmap = dict([ (getattr(signal, sig), sig) for sig in dir(signal) if (sig.startswith('SIG') and '_' not in sig) ]) signals = [ sigmap.get(n+1,str(n+1)) for n, bit in enumerate(reversed(binary)) if bit == '1' ] return signals if __name__ == '__main__': if sys.argv[1].startswith('0x'): N = int(sys.argv[1], 16) else: N = int(sys.argv[1]) binstr = dec2bin(N) print '"%s" (0x%x,%d) => %s; %s' % (sys.argv[1], N, N, binstr, ','.join(sigmask(binstr)) )