来源(博客园)

From: http://www.cnblogs.com/liujiangyi/archive/2012/08/02/2620338.html

系统对信号的三种处理方式

1.忽略该信号。大多数信号都可使用这种方式进行处理,但有两种信号却决不能被忽略。它们是:SIGKILL和SIGSTOP。这两种信号不能被忽略的原因是:它们向超级用户提供一种使用进程或停止的可靠方法。另外,如果忽略某些由硬件异常产生的信号,则进程的行为是未定义的;

2.捕捉信号。为了做到这一点要通知内核在某种信号发生时,调用一个用户函数。在用户函数中,可执行用户希望对这种事件进行的处理。例如,若编写一个命令解释器,当用户用键盘产生中断信号时,很可能希望返回到程序的主循环,终止系统正在为该用户执行的命令。如果捕捉到SIGCHLD信号,则表示子进程已经停止,所以此信号的捕捉函数可以调用waitpid,以取得该子进程的进程ID以及它的终止状态。又例如,如果进程创建了临时文件,那么可能要为SIGTERM信号编写一个信号捕捉函数以清除临时文件(kill 命令传送的系统默认信号是终止信号);

3.执行系统默认动作。对大多数信号的系统默认动作是终止该进程

分类: 读书笔记

Link: http://www.asm32.net/article_details.aspx?id=7086