How to read bitmask for the signals
Environment
- Red Hat Enterprise Linux
Issue
- How to check which signals are blocked for the process.
$ cat /proc/8843/status |grep ^Sig
SigQ: 1/62809
SigPnd: 0000000000000000
SigBlk: 0000000056727a01
SigIgn: 0000000000381000
SigCgt: 00000001c98044ff
Resolution
SigPnd: 0000000000000000: Signals Pending (Raised, but waiting to be acted upon potentially because they are blocked).
SigBlk: 0000000056727a01: Signals that are blocked by the process. This can be a temporary thing. The application can be coded in such a way to temporarily block a signal. The kernel will then delay delivery of that signal until such time as it becomes unblocked or the signals are asked to be delivered.
SigIgn: 0000000000381000: Signals that are ignored by the process. They are simply thrown away. (Except for SIGKILL and SIGSTOP, which cannot be ignored)
SigCgt: 00000001c98044ff: Signals that can be caught by the process.
- Here's an example of how those bitmasks for SigBlk, SigCgt, etc can be read. Let's take SigBlk
0000000056727a01
as an example and convert the SigBlk to binary.
0000000056727a01 = 0101 0110 0111 0010 0111 1010 0000 0001
NOTE: The position of the set bits (1's) from right to left should map to the "kill -l" list of signals
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
- From above output it is confirmed signal numbers
1,10,12,13,14,15 etc
are blocked.
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments