信号:
一支穿云箭,千军万马来相见(放下手头的工作,来集合)
信号用于通知一个事件的发生,会打断当前的操作,去处理这个事件
前提是:能够识别这个信
信号的种类多,每个代表不同的事件
信号是有生命周期的:产生 > 注册 > 注销 > 处理
【阻塞】:阻止信号的被处理
操作系统中的信号种类: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 -> Terminated
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
例如:SIGSEGV 段错误 SIGFPE 分母为零
[ ] 非可靠信号 信号可能会丢失
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
[ ] 可靠信号/ 实时信号 信号不会丢失
信号的产生:
硬件的产生
硬件信号 > 键盘的Ctrl+c 结束一个前台进程 硬件发送给软件一个信号 【键盘上的输入只有前台进程可以收到】
【不要用退出进程】Ctrl + z 是停止运行状态,进程没有退出 2) SIGINT interrupt
Ctrl + | 是quit退出 3) SIGQUIT quit
Ctrl + c 是退出进程
软件的产生
kill 其实就是进程管理的命令
向自己发送信号
raise(int sig);
向自己发送信号
int kill(pid_t pid, int sig);
给指定进程 发送指定信号
abort();
直接给自己发送一个SIGABRT信号, abort 中执信号
alarm(unsigned int seconds)
在过了~秒之后,给自己发送一个SIGALRM信号 定时器信号
。 second == 0 时,会取消上一个时间未到的定时器