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 }