值 | 名 | 说 |
01 | SIGHUP | 挂起(hangup)当终端机察觉到终止连线操作时便会传送这个信号 |
02 | SIGINT | 中断,当用户从键盘按^c键或^break键时,则会产生此信号 |
03 | SIGQUIT | 退出,当用户从键盘按quit键时,如CTRL+\,则会产生此信号 |
04 | SIGILL | 非法指令(进程执行了一个不合法德CPU指令) |
05 | SIGTRAP | 跟踪陷阱(trace trap),当子进程因被追踪而暂停时产生此信号给父进程 |
06 | SIGIOT | IOT指令 |
07 | SIGBUS | 总线错误,BUS发生错误时会产生此信号 |
08 | SIGFPE | 浮点运算溢出 |
09 | SIGKILL | 杀死、终止进程的信号,此信号不能被拦截或忽略 |
10 | SIGUSR1 | 用户自定义信号1 |
11 | SIGSEGV | 段违例(segmentation |
12 | SIGUSR2 | 用户自定义信号2 |
13 | SIGPIPE | 错误的管道;欲写入无读取端的管道时产生此信号 |
14 | SIGALRM | 闹钟。当某进程希望在某时间后接收信号时发此信号 |
15 | SIGTERM | 软件终止(software |
16 | SIGSTKFLT | 堆栈错误 |
17 | SIGHLD | 子进程暂停或结束时便会产生此信号给父进程 |
18 | SIGCONT | 此信号会让暂停的进程继续执行 |
19 | SIGSTOP | 此信号用来让进程暂停执行,此信号不能被拦截或忽略 |
20 | SIGTSTP | 当由键盘(CTRL+Z)表示暂停时就产生此信号 |
signal(SIGPIPE,SIG_IGN):
程这个连接已经断开了,不要再写了。根据信号的默认处理规则SIGPIPE信号的默认执行动作是 terminate(终止、退出), 所以client会退出。
若不想客户端退出可以把 SIGPIPE设为SIG_IGN
如:
signal(SIGPIPE,SIG_IGN);
这时SIGPIPE交给了系统处理。
服务器采用了fork的话,要收集垃圾进程,防止僵死进程的产生,可以这样处理:
signal(SIGCHLD,SIG_IGN); 交给系统init去回收。
这里子进程就不会产生僵死进程了