Chinaunix首页 | 论坛 | 博客
  • 博客访问: 969089
  • 博文数量: 200
  • 博客积分: 5011
  • 博客等级: 大校
  • 技术积分: 2479
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 15:07
文章分类

全部博文(200)

文章存档

2009年(12)

2008年(190)

我的朋友

分类:

2008-12-08 11:40:10

10 signals

10.2 signal concept

1. signal对应的const symbol定义在signal.h文件中,或者是定义在其他被signal.h包含的头文件中。

2. linux2.4.2231signal, 并且支持application defined signal。没有0对应的singnal, kill函数用0 signal来进行特殊的工作,这被称为null signal

3Signal产生的几个源头:

1terminal产生,如delete, ctr-c字符产生的signal,多产生interrupt signal,即SIGINT

2kill函数发送到一个process/process group。前提是用户拥有接受signalprocess或者用户是superuser

3kill command,其实是调用了kill 函数。默认发送SIGTERM信号,该信号的默认能处理是终止进程。

4hardware 引起的signal, 如被0除,以及invalid memory referenceSIGSEGV signal)。

5)在software 的一些条件下也可以产生signal,如SIGURG,即网络来了数据,还有SIGALARMclock产生的信号。SIGPIPE即当一个进程写一个pipe,但是这个pipe的读取进程已经退出的时候,或者写一个没有connectedsocket

4Signal可以被看作是asynchronous event.

5. signal的处理方法:

1IgnoreSIGSTOPSIGKILL不能被忽略。目的在于保证kernelsuperuser有一种可以终止/停止进程的方法。

2catch the signal,要指定signal来了的handler函数是什么。但是SIGSTOPSIGKILL不能被catch。其实不能被catch的意思是说不能由用户指定怎么处理这个signalSIGSTOPSIGKILL的行为就是终止/停止进程。

3)使用系统默认的处理方法。多数是将进程中止

阅读(1174) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~