返回首页
当前位置: 主页 > 服务器端 >

[unix]系统信号的使用

时间:2010-06-05 10:36来源:未知 作者:sam.huang 点击:
信号在linux系统占有很重的地位,在bash shell中我们都在不知道不觉得用到信号的知识。比如kill -9 122345,杀死122345这个进程,从这个案例中也可以看出信号是以进程为单位,进程负责发
  

       信号在linux系统占有很重的地位,在bash shell中我们都在不知道不觉得用到信号的知识。比如kill -9 122345,杀死122345这个进程,从这个案例中也可以看出信号是以进程为单位,进程负责发送信号及接收信号。

       在学习信号的过程中,我一直有个问题,如果父进程不向子进程发送退出信号时,父进程的退出并不会引起子进程也退出。但确实PHP的fork后,父进程退出子进程跟着也退出了,我猜想这很有可能是是PHP已经封装了父进程退出就向子进程发送信号要求子进程退出。这个问题就引起如何去杀死父进程后子进程也退出?首先每个进程都属于一个进程组,父进程一般是这个进程组的组长,pid也是这个进程组的组ID,kill -9 -122345时就表示向这个进程发着SIGKILL信号。所有进程将退出系统。

        信号在linux C编程中的实现也非常的简单,先看看信号表示:

号码 名字 默认行为(这里面说的是默认行为,你可以重写这个行为)
1 SIGHUP 终止(失去终端控制权)
2 SIGINT 键盘终止(CTRL+C)
3 SIGQUIT 键盘退出(CTRL+Z)
4 SIGIL 终止(非法指令)
5 SIGTRAP 终止并dump core(跟踪陷阱)
6 SIGABRT 终止并dump core(来自abort 函数的终止信号)
7 SIGBUS 终止(总线错误)
8 SIGPFE 终止并dump core(浮点异常)
9 SIGKILL 终止(杀死程序)
10 SIGUSR1 终止(用户自定义)
11 SIGSEGV 终止并dump core(引用无效存储器)
12 SIGUSR2 用户自定义的信号2
13 SIGPIPE 向一个没有读用户的管道做写操作
14 SIGALRM 来自alarm函数的定时器信号
15 SIGTERM 软件终止信号
16 SIGSTKFLT 协处理器上的栈故障
17 SIGCCHLD 忽略(一个子进程终止或暂停)
18 SIGCONT 忽略(继续进程如果该进程停止)
19 SIGSTOP 停止直到下一个SIGCONT(不来自终端暂停信号)
20 SIGTSTP 停止直到下一个SIGCONT(自终端暂停信号)
21 SIGTTIN 停止直到下一个SIGCONT(后台进程读终端)
22 SIGTTOU 停止直到下一个SIGCONT(后台进程向终端写)
23 SIGURG 忽略(套接字上的紧急情况)
24 SIGXCPU 终止(CPU时间限制超出)
25 SIGXFSZ 终止(文件大小限制超出)
26 SIGVTALRM 终止(虚拟定时器期满)
27 SIGPROF 终止(剖析定时器期满)
28 SIGWINCH 忽略(窗口大小变化)
29 SIGIO 终止(在某个描述符上可执行IO操作)
30 SIGPWR 终止(电源故障)

 

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
发布者资料
amw 查看详细资料 发送留言 加为好友 用户等级:高级会员 注册时间:2009-03-30 13:03 最后登录:2012-01-17 11:01
推荐内容