分类:
2008-12-08 11:40:10
10 signals
10.2 signal concept
1. signal对应的const symbol定义在signal.h文件中,或者是定义在其他被signal.h包含的头文件中。
2.
linux
3.Signal产生的几个源头:
(1)terminal产生,如delete, ctr-c字符产生的signal,多产生interrupt signal,即SIGINT
(2)kill函数发送到一个process/process group。前提是用户拥有接受signal的process或者用户是superuser。
(3)kill command,其实是调用了kill 函数。默认发送SIGTERM信号,该信号的默认能处理是终止进程。
(4)hardware 引起的signal, 如被0除,以及invalid memory reference(SIGSEGV signal)。
(5)在software 的一些条件下也可以产生signal,如SIGURG,即网络来了数据,还有SIGALARM即clock产生的信号。SIGPIPE即当一个进程写一个pipe,但是这个pipe的读取进程已经退出的时候,或者写一个没有connected的socket。
4.Signal可以被看作是asynchronous event.
5. signal的处理方法:
(1)Ignore,SIGSTOP和SIGKILL不能被忽略。目的在于保证kernel和superuser有一种可以终止/停止进程的方法。
(2)catch the signal,要指定signal来了的handler函数是什么。但是SIGSTOP和SIGKILL不能被catch。其实不能被catch的意思是说不能由用户指定怎么处理这个signal。SIGSTOP和SIGKILL的行为就是终止/停止进程。
(3)使用系统默认的处理方法。多数是将进程中止