信号:进程间通知机制(不携带数据)---异步通知机制
信号:软中断
-
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
2) SIGINT:ctrl + c
让一个进程被打断
3) SIGQUIT:ctrl + \
让一个进程结束
9) SIGKILL:
强制让一个进程结束
11)SIGSEGV:
让一个进程结束(段错误)
13)SIGPIPE:
让一个进程结束(管道破裂)
14)SIGALRM:
让一个进程结束(定时时间到达)
17)SIGCHLD:
子进程结束时发送给父进程
18)SIGCONT:
让停止态的进程继续执行
19)SIGSTOP:
让运行态的进程进入停止态(暂停)强制停止
20)SIGTSTP:
ctrl + z 让进程进入暂停态,后台进程
来自终端的停止信号
10 SIGUSR1
12 SIGUSR2
专门预留给程序员使用的未定义信号。
1.注册信号:
信号处理方式:
-
忽略 :不处理
-
缺省 :按照操作系统默认方式处理
-
捕获 :按照自定义方式处理
cpp
sighandler_t signal(int signum, sighandler_t handler);
功能:注册一个信号
参数:
signum :要注册的信号的编号
handler:对信号的处理方式
SIG_IGN : 按忽略方式处理
SIG_DFL :按照缺省方式处理
自定义的函数:按照捕获方式处理
返回值:
成功:handler
失败:SIG_ERR
注意:
-
如果信号不注册,自动按照默认(缺省)方式处理;大多数信号默认处理方式是结束一个进程。
-
信号尽量早注册。
2.发送信号
kill();*
cpp
int kill(pid_t pid, int sig);
功能:给进程发送一个信号
参数:
pid:接收信号的进程
sig:信号的编号
返回值:
成功:0
失败:-1
3.pause
void pause(void);
功能:挂起一个进程(让进程进入休眠)
可以通过一个信号唤醒pause挂起的进程,但是这个信号必须被捕获
4.alarm
unsigned int alarm(unsigned int seconds);
功能:定时若干秒之后发送一个SIGALRM的信号