匿名用户

1级

2016-12-09 回答

信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。

信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。

一、信号的基本概念

本节先介绍信号的一些基本概念,然后给出一些基本的信号类型和信号对应的事件。基本概念对于理解和使用信号,对于理解信号机制都特别重要。下面就来看看什么是信号。

1、基本概念

软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。

收 到信号的进程对各种信号有不同的处理方法。处理方法可以分为三类:第一种是类似中断的处理程序,对于需要处理的信号,进程可以指定处理函数,由该函数来处 理。第二种方法是,忽略某个信号,对该信号不做任何处理,就象未发生过一样。第三种方法是,对该信号的处理保留系统的默认值,这种缺省操作,对大部分的信 号的缺省操作是使得进程终止。进程通过系统调用signal来指定进程对某个信号的处理行为。

在进程表的表项中有一个软中断信号域,该域中每一位对应一个信号,当有信号发送给进程时,对应位置位。由此可以看出,进程对不同的信号可以同时保留,但对于同一个信号,进程并不知道在处理之前来过多少个。

2、信号的类型

发出信号的原因很多,这里按发出信号的原因简单分类,以了解各种信号:

(1) 与进程终止相关的信号。当进程退出,或者子进程终止时,发出这类信号。

(2) 与进程例外事件相关的信号。如进程越界,或企图写一个只读的内存区域(如程序正文区),或执行一个特权指令及其他各种硬件错误。

(3) 与在系统调用期间遇到不可恢复条件相关的信号。如执行系统调用exec时,原有资源已经释放,而目前系统资源又已经耗尽。

(4) 与执行系统调用时遇到非预测错误条件相关的信号。如执行一个并不存在的系统调用。

(5) 在用户态下的进程发出的信号。如进程调用系统调用kill向其他进程发送信号。

(6) 与终端交互相关的信号。如用户关闭一个终端,或按下break键等情况。

(7) 跟踪进程执行的信号。

Linux支持的信号列表如下。很多信号是与机器的体系结构相关的,首先列出的是POSIX_sec = 1;

value_usec = 0;

value_sec = 1;

value_usec = 0;

setitimer(ITIMER_REAL, &value, &ovalue);

value2_sec = 0;

value2_usec = 500000;

value2_sec = 0;

value2_usec = 500000;

setitimer(ITIMER_VIRTUAL, &value2, &ovalue);

for (;;) ;

}

该例子的屏幕拷贝如下:

localhost:~$ ./timer_test

process id is 579

Catch a signal – SIGVTALRM

Catch a signal – SIGALRM

Catch a signal – SIGVTALRM

Catch a signal – SIGVTALRM

Catch a signal – SIGALRM

Catch a signal –GVTALRM

signal 11 linux,linux signal 11 是什么意思相关推荐

  1. linux signal函数用法,linux信号机制之sigaction构造体浅析,signal 函数,信号捕捉.

    来自:http://hi.baidu.com/phenix_yw/blog/item/6eb4ca391d1479f23a87ce19.html 信号安装函数sigaction(int signum, ...

  2. (转载)Linux 信号signal处理机制

    信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念.Linux对信号机制的大致实现方法.如何使用信号,以及有关信号的几个系统调用. 信号机制是进程之间相互传递消息的一种方法,信号全 ...

  3. 非常好的一篇对linux信号(signal)的解析

    [摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核对于信号的处理流程包括信号的触发/注册/执 ...

  4. linux 信号没有被处理方法,[计算机]Linux 信号signal处理机制.doc

    [计算机]Linux 信号signal处理机制 Linux 信号signal处理机制 信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念.Linux对信号机制的大致实现方法.如何使 ...

  5. [C++11 std::thread] 使用C++11 编写 Linux 多线程程序

    From: http://www.ibm.com/developerworks/cn/linux/1412_zhupx_thread/index.html 本文讲述了如何使用 C++11 编写 Lin ...

  6. Linux信号signal的介绍和示例

    如何让程序在后台运行 在之前的章节中,如果要运行程序,在命令提示行下输入程序名后回车,程序被执行,然后等待程序运行完成.在程序运行的过程中,可以用Ctrl+c中止它. 在实际开发中,我们需要让程序在后 ...

  7. linux signal用法,Linux 信号 signal 用法详解及注意事项

    Linux 信号 signal 用法详解及注意事项 1) SIGHUP 本信号在用户终端连接 (正常或非正常) 结束时发出, 通常是在终端的控 制进程结束时, 通知同一 session 内的各个作业, ...

  8. linux源码0.11解析pdf,linux0.11 赵炯的Linux源代码剖析中的带中文注释的源代码 - 下载 - 搜珍网...

    linux内核0.11注释版/boot/bootsect.s linux内核0.11注释版/boot/head.s linux内核0.11注释版/boot/setup.s linux内核0.11注释版 ...

  9. Linux 信号signal处理机制

    信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念.Linux对信号机制的大致实现方法.如何使用信号,以及有关信号的几个系统调用. 信号机制是进程之间相互传递消息的一种方法,信号全 ...

  10. Linux 内核0.11 系统调用详解(下)

    备注:上讲中,博猪讲到了操作系统是如何让用户程序调用系统函数的,这讲继续接上讲的话题,从一个系统内核系统函数创建的小实验来学习系统内核具体做了些什么.理清下系统调用的整体过程. 实验:在Linux 0 ...

最新文章

  1. 【NOIP校内模拟】T2 华莱士(环套树)
  2. JAVA学习笔记--初始化与清理
  3. 物流运输系统设计浅谈
  4. Vue+Openlayers+el-checkbox实现多选配置图层的显示和隐藏
  5. 10通信端口感叹号_工程现场通信总线布线、压接规范
  6. xBIM 基础16 IFC的空间层次结构
  7. threejs 判断对象是否在可视区内
  8. word break II 对字符串根据已知字典 分解出所有可能组合
  9. 什么是响应式Web设计?怎样进行?
  10. sql报表按月统计_用Excel如何对销售数据按月分别统计成本,销售额以及利润?...
  11. 利用Python分析羊车门问题
  12. ros melodic控制真实机械臂之urdf模型生成
  13. 开源大数据周刊-第50期
  14. Angr安装与使用之使用篇(一)
  15. 若依RuoYi框架修改器
  16. R语言-主成分分析和聚类分析实操(包含源码)
  17. cc2430 外部中断
  18. matlab中format使用方法
  19. 初识nodejs16
  20. 超越成功:经理人需提升的十二项自我管理能力

热门文章

  1. 大数据智能推荐系统原理介绍
  2. Word文档插入没有可用的联机内容
  3. 【Lintcode】541. Zigzag Iterator II
  4. 图像处理珍藏版本汇总
  5. 计算机基础知识表格斜线,word表格斜线,教您word表格添加斜线的方法
  6. 编程小知识之 struct 构造函数(C#)
  7. Table is marked as crashed and should be repaire
  8. w10 计算机配置在哪里,w10如何查看电脑配置
  9. IR2104电机驱动
  10. 科幻小说《霜与火》 by 雷·布雷德伯里