系统对信号的三种处理方式
2012-08-02 16:51
399 查看
1.忽略该信号。大多数信号都可使用这种方式进行处理,但有两种信号却决不能被忽略。它们是:SIGKILL和SIGSTOP。这两种信号不能被忽略的原因是:它们向超级用户提供一种使用进程或停止的可靠方法。另外,如果忽略某些由硬件异常产生的信号,则进程的行为是未定义的;
2.捕捉信号。为了做到这一点要通知内核在某种信号发生时,调用一个用户函数。在用户函数中,可执行用户希望对这种事件进行的处理。例如,若编写一个命令解释器,当用户用键盘产生中断信号时,很可能希望返回到程序的主循环,终止系统正在为该用户执行的命令。如果捕捉到SIGCHLD信号,则表示子进程已经停止,所以此信号的捕捉函数可以调用waitpid,以取得该子进程的进程ID以及它的终止状态。又例如,如果进程创建了临时文件,那么可能要为SIGTERM信号编写一个信号捕捉函数以清除临时文件(kill 命令传送的系统默认信号是终止信号);
3.执行系统默认动作。对大多数信号的系统默认动作是终止该进程
2.捕捉信号。为了做到这一点要通知内核在某种信号发生时,调用一个用户函数。在用户函数中,可执行用户希望对这种事件进行的处理。例如,若编写一个命令解释器,当用户用键盘产生中断信号时,很可能希望返回到程序的主循环,终止系统正在为该用户执行的命令。如果捕捉到SIGCHLD信号,则表示子进程已经停止,所以此信号的捕捉函数可以调用waitpid,以取得该子进程的进程ID以及它的终止状态。又例如,如果进程创建了临时文件,那么可能要为SIGTERM信号编写一个信号捕捉函数以清除临时文件(kill 命令传送的系统默认信号是终止信号);
3.执行系统默认动作。对大多数信号的系统默认动作是终止该进程
相关文章推荐
- linux系统编程之信号(七):被信号中断的系统调用和库函数处理方式
- linux系统编程之信号(七):被信号中断的系统调用和库函数处理方式
- linux系统编程之信号(七):被信号中断的系统调用和库函数处理方式
- linux系统编程之信号(七):被信号中断的系统调用和库函数处理方式
- 关于信号三种处理方式初步理解!
- linux系统编程之信号(七):被信号中断的系统调用和库函数处理方式
- C#对图像像素处理的三种方式
- java获得系统当前时间三种方式及日期格式之间的相互转化
- python中三种处理文件输出的方式
- JAVA事件的三种处理方式
- 图像检索服务器编写问题记录——线程中信号的处理方式思考
- ASP.NET错误处理的三种方式
- Android 获取系统时间的三种方式
- linux进程间通信方式之信号处理sigaction
- scrapy处理豆瓣登录验证码的三种方式
- 使用 Spring 更好地处理 Struts 动作(三种整合 Struts 应用程序与 Spring 的方式)
- cocos2dx UI自适应的三种处理方式:
- 使用inf文件安装文件系统驱动程序的三种方式
- 用 Spring 更好地处理 Struts 动作三种整合 Struts 应用程序与 Spring 的方式
- sleep与信号唤醒的问题 & 内核对信号的处理方式