Download: trapstuff.txt
See also: signal.h
alias traps='trap -l|sed "s,\t,\n,g;s,),:,g;s,SIG,,g;s, \([0-9]\),\1,g"' alias kills='for h in $(builtin kill -l); do echo "$(builtin kill -l $h): $h"; done';
1: HUP 2: INT 3: QUIT 4: ILL 5: TRAP 6: ABRT 7: BUS 8: FPE 9: KILL 10: USR1 11: SEGV 12: USR2 13: PIPE 14: ALRM 15: TERM 16: STKFLT 17: CHLD 18: CONT 19: STOP 20: TSTP 21: TTIN 22: TTOU 23: URG 24: XCPU 25: XFSZ 26: VTALRM 27: PROF 28: WINCH 29: IO 30: PWR 31: SYS 34: RTMIN 35: RTMIN+1 36: RTMIN+2 37: RTMIN+3 38: RTMIN+4 39: RTMIN+5 40: RTMIN+6 41: RTMIN+7 42: RTMIN+8 43: RTMIN+9 44: RTMIN+10 45: RTMIN+11 46: RTMIN+12 47: RTMIN+13 48: RTMIN+14 49: RTMIN+15 50: RTMAX-14 51: RTMAX-13 52: RTMAX-12 53: RTMAX-11 54: RTMAX-10 55: RTMAX-9 56: RTMAX-8 57: RTMAX-7 58: RTMAX-6 59: RTMAX-5 60: RTMAX-4 61: RTMAX-3 62: RTMAX-2 63: RTMAX-1 64: RTMAX
Using traps are helpful to use in functions like this:
function yn ()
{
local post=`tput op;tput sgr0;tput cnorm`;
trap 'echo -e "${post}"' 1 2 3 6 15 RETURN;
(
local a= YN=1 msg="${@}" pre=`tput civis;tput setab 4;tput setaf 7` post=`tput op;tput sgr0;tput cnorm`;
trap 'echo -e "${post}"' 1 2 3 6 15 RETURN;
until [[ $YN == 0 || $YN == 65 ]]; do
echo -en "\n\n${pre}:: ${msg}? (y/N)${post} " && read -s -n 1 a;
case $a in
[yY]) YN=0;
;;
[nN]) YN=65;
;;
esac;
echo;
done;
return $YN
)
}
function trapinfo ()
{
local signum=${1:-} sigdesc="`trapdesc ${1:-}`";
case $signum in
1 | HUP | SIGHUP) echo "${signum}: ${sigdesc}: HUP - SIGHUP"
;;
2 | INT | SIGINT) echo "${signum}: ${sigdesc}: INT - SIGINT"
;;
3 | QUIT | SIGQUIT) echo "${signum}: ${sigdesc}: QUIT - SIGQUIT"
;;
4 | ILL | SIGILL) echo "${signum}: ${sigdesc}: ILL - SIGILL"
;;
5 | TRAP | SIGTRAP) echo "${signum}: ${sigdesc}: TRAP - SIGTRAP"
;;
6 | ABRT | SIGABRT) echo "${signum}: ${sigdesc}: ABRT - SIGABRT"
;;
7 | BUS | SIGBUS) echo "${signum}: ${sigdesc}: BUS - SIGBUS"
;;
8 | FPE | SIGFPE) echo "${signum}: ${sigdesc}: FPE - SIGFPE"
;;
9 | KILL | SIGKILL) echo "${signum}: ${sigdesc}: KILL - SIGKILL"
;;
10 | USR1 | SIGUSR1) echo "${signum}: ${sigdesc}: USR1 - SIGUSR1"
;;
11 | SEGV | SIGSEGV) echo "${signum}: ${sigdesc}: SEGV - SIGSEGV"
;;
12 | USR2 | SIGUSR2) echo "${signum}: ${sigdesc}: USR2 - SIGUSR2"
;;
13 | PIPE | SIGPIPE) echo "${signum}: ${sigdesc}: PIPE - SIGPIPE"
;;
14 | ALRM | SIGALRM) echo "${signum}: ${sigdesc}: ALRM - SIGALRM"
;;
15 | TERM | SIGTERM) echo "${signum}: ${sigdesc}: TERM - SIGTERM"
;;
16 | STKFLT | SIGSTKFLT) echo "${signum}: ${sigdesc}: STKFLT - SIGSTKFLT"
;;
17 | CHLD | SIGCHLD) echo "${signum}: ${sigdesc}: CHLD - SIGCHLD"
;;
18 | CONT | SIGCONT) echo "${signum}: ${sigdesc}: CONT - SIGCONT"
;;
19 | STOP | SIGSTOP) echo "${signum}: ${sigdesc}: STOP - SIGSTOP"
;;
20 | TSTP | SIGTSTP) echo "${signum}: ${sigdesc}: TSTP - SIGTSTP"
;;
21 | TTIN | SIGTTIN) echo "${signum}: ${sigdesc}: TTIN - SIGTTIN"
;;
22 | TTOU | SIGTTOU) echo "${signum}: ${sigdesc}: TTOU - SIGTTOU"
;;
23 | URG | SIGURG) echo "${signum}: ${sigdesc}: URG - SIGURG"
;;
24 | XCPU | SIGXCPU) echo "${signum}: ${sigdesc}: XCPU - SIGXCPU"
;;
25 | XFSZ | SIGXFSZ) echo "${signum}: ${sigdesc}: XFSZ - SIGXFSZ"
;;
26 | VTALRM | SIGVTALRM) echo "${signum}: ${sigdesc}: VTALRM - SIGVTALRM"
;;
27 | PROF | SIGPROF) echo "${signum}: ${sigdesc}: PROF - SIGPROF"
;;
28 | WINCH | SIGWINCH) echo "${signum}: ${sigdesc}: WINCH - SIGWINCH"
;;
29 | IO | SIGIO) echo "${signum}: ${sigdesc}: IO - SIGIO"
;;
30 | PWR | SIGPWR) echo "${signum}: ${sigdesc}: PWR - SIGPWR"
;;
31 | SYS | SIGSYS) echo "${signum}: ${sigdesc}: SYS - SIGSYS"
;;
34 | RTMIN | SIGRTMIN) echo "${signum}: ${sigdesc}: RTMIN - SIGRTMIN"
;;
35 | RTMIN+1 | SIGRTMIN+1) echo "${signum}: ${sigdesc}: RTMIN+1 - SIGRTMIN+1"
;;
36 | RTMIN+2 | SIGRTMIN+2) echo "${signum}: ${sigdesc}: RTMIN+2 - SIGRTMIN+2"
;;
37 | RTMIN+3 | SIGRTMIN+3) echo "${signum}: ${sigdesc}: RTMIN+3 - SIGRTMIN+3"
;;
38 | RTMIN+4 | SIGRTMIN+4) echo "${signum}: ${sigdesc}: RTMIN+4 - SIGRTMIN+4"
;;
39 | RTMIN+5 | SIGRTMIN+5) echo "${signum}: ${sigdesc}: RTMIN+5 - SIGRTMIN+5"
;;
40 | RTMIN+6 | SIGRTMIN+6) echo "${signum}: ${sigdesc}: RTMIN+6 - SIGRTMIN+6"
;;
41 | RTMIN+7 | SIGRTMIN+7) echo "${signum}: ${sigdesc}: RTMIN+7 - SIGRTMIN+7"
;;
42 | RTMIN+8 | SIGRTMIN+8) echo "${signum}: ${sigdesc}: RTMIN+8 - SIGRTMIN+8"
;;
43 | RTMIN+9 | SIGRTMIN+9) echo "${signum}: ${sigdesc}: RTMIN+9 - SIGRTMIN+9"
;;
44 | RTMIN+10 | SIGRTMIN+10) echo "${signum}: ${sigdesc}: RTMIN+10 - SIGRTMIN+10"
;;
45 | RTMIN+11 | SIGRTMIN+11) echo "${signum}: ${sigdesc}: RTMIN+11 - SIGRTMIN+11"
;;
46 | RTMIN+12 | SIGRTMIN+12) echo "${signum}: ${sigdesc}: RTMIN+12 - SIGRTMIN+12"
;;
47 | RTMIN+13 | SIGRTMIN+13) echo "${signum}: ${sigdesc}: RTMIN+13 - SIGRTMIN+13"
;;
48 | RTMIN+14 | SIGRTMIN+14) echo "${signum}: ${sigdesc}: RTMIN+14 - SIGRTMIN+14"
;;
49 | RTMIN+15 | SIGRTMIN+15) echo "${signum}: ${sigdesc}: RTMIN+15 - SIGRTMIN+15"
;;
50 | RTMAX-14 | SIGRTMAX-14) echo "${signum}: ${sigdesc}: RTMAX-14 - SIGRTMAX-14"
;;
51 | RTMAX-13 | SIGRTMAX-13) echo "${signum}: ${sigdesc}: RTMAX-13 - SIGRTMAX-13"
;;
52 | RTMAX-12 | SIGRTMAX-12) echo "${signum}: ${sigdesc}: RTMAX-12 - SIGRTMAX-12"
;;
53 | RTMAX-11 | SIGRTMAX-11) echo "${signum}: ${sigdesc}: RTMAX-11 - SIGRTMAX-11"
;;
54 | RTMAX-10 | SIGRTMAX-10) echo "${signum}: ${sigdesc}: RTMAX-10 - SIGRTMAX-10"
;;
55 | RTMAX-9 | SIGRTMAX-9) echo "${signum}: ${sigdesc}: RTMAX-9 - SIGRTMAX-9"
;;
56 | RTMAX-8 | SIGRTMAX-8) echo "${signum}: ${sigdesc}: RTMAX-8 - SIGRTMAX-8"
;;
57 | RTMAX-7 | SIGRTMAX-7) echo "${signum}: ${sigdesc}: RTMAX-7 - SIGRTMAX-7"
;;
58 | RTMAX-6 | SIGRTMAX-6) echo "${signum}: ${sigdesc}: RTMAX-6 - SIGRTMAX-6"
;;
59 | RTMAX-5 | SIGRTMAX-5) echo "${signum}: ${sigdesc}: RTMAX-5 - SIGRTMAX-5"
;;
60 | RTMAX-4 | SIGRTMAX-4) echo "${signum}: ${sigdesc}: RTMAX-4 - SIGRTMAX-4"
;;
61 | RTMAX-3 | SIGRTMAX-3) echo "${signum}: ${sigdesc}: RTMAX-3 - SIGRTMAX-3"
;;
62 | RTMAX-2 | SIGRTMAX-2) echo "${signum}: ${sigdesc}: RTMAX-2 - SIGRTMAX-2"
;;
63 | RTMAX-1 | SIGRTMAX-1) echo "${signum}: ${sigdesc}: RTMAX-1 - SIGRTMAX-1"
;;
64 | RTMAX | SIGRTMAX) echo "${signum}: ${sigdesc}: RTMAX - SIGRTMAX"
;;
65) echo "${signum}: ${sigdesc}: invalid signal specification"
;;
*) echo "${signum}: ${sigdesc}: Unknown Signal"
;;
esac
}
function trapdesc ()
{
case $1 in
0) echo "Bogus signal"
;;
1) echo "Hangup"
;;
2) echo "Interrupt"
;;
3) echo "Quit"
;;
4) echo "Illegal instruction"
;;
5) echo "BPT trace/trap"
;;
6) echo "ABORT instruction"
;;
7) echo "Bus error"
;;
8) echo "Floating point exception"
;;
9) echo "Killed"
;;
10) echo "User signal 1"
;;
11) echo "Segmentation fault"
;;
12) echo "User signal 2"
;;
13) echo "Broken pipe"
;;
14) echo "Alarm clock"
;;
15) echo "Terminated"
;;
17) echo "Child death or stop"
;;
18) echo "Continue"
;;
19) echo "Stopped (signal)"
;;
20) echo "Stopped"
;;
21) echo "Stopped (tty input)"
;;
22) echo "Stopped (tty output)"
;;
23) echo "Urgent IO condition"
;;
24) echo "CPU limit"
;;
25) echo "File limit"
;;
26) echo "Alarm (virtual)"
;;
27) echo "Alarm (profile)"
;;
28) echo "Window changed"
;;
29) echo "I/O ready"
;;
30) echo "power failure imminent"
;;
31) echo "Bad system call"
;;
*) echo "Unknown"
;;
esac
}