信号
- SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
- SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
- SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
- SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
- SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
- SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
- SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
- SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
- SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
- SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
- SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
- SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
- SIGRTMAX-1 64) SIGRTMAX
信号的5种默认处理动作
查看core文件中的错误信息
- 通过
ulimit -a
查看core文件大小 - 通过
ulimit -c 1024
修改core文件的大小为1024 -g
编译- 运行程序
- 进入GDB调试
- 查看core文件
常见函数
kill
raise
raise(sig)
== kill(getpid(), sig)
abort
abort()
== kill(getpid(), SIGABRT)
== raise(SIGABRT)
alarm
该函数为非阻塞函数。
setitimer
循环定时
it_value:设置后多久后开始启动定时器
it_interval:定时器执行周期(定时结束到下一次定时开始)
总结
信号
8字节 long类型 64位 64个信号
前31个为常规信号,后面33个为实时信号
SIGKILL和SIGSTOP信号不能被捕捉,阻塞和注册,只能执行默认动作
信号有三种状态:产生、未决和递达。
信号的默认动作有五种:终止、暂停、继续、忽略(Ign)和Core。
发送信号的函数:kill、raise、abort
设置定时器函数:alarm、setitimer
一个进程有且只有唯一的一个定时器,到时产生SIGALRM信号,默认动作是终止当前进程。