两个重要信号

SIGALRM信号

在进行阻塞式系统调用时,为避免进程陷入无限期的等待,可以为这些阻塞式系统调用设置定时器。Linux提供了alarm系统调用和SIGALRM信号实现这个功能。

要使用定时器,首先要安装SIGALRM信号。如果不安装SIGALRM信号,则进程收到SIGALRM信号后,缺省的动作就是终止当前进程。SIGALRM信号安装成功后,在什么情况下进程会收到该信号呢?这就要依赖于Linux提供的定时器功能。在Linux系统下,每个进程都有惟一的一个定时器,该定时器提供了以秒为单位的定时功能。在定时器设置的超时时间到达后,调用alarm的进程将收到SIGALRM信号。

alarm系统调用的原型为:

#include <unistd.h>

unsigned int alarm(unsigned int seconds);

参数说明:

seconds:要设定的定时时间,以秒为单位。在alarm调用成功后开始计时,超过该时间将触发SIGALRM信号。

返回值:

返回当前进程以前设置的定时器剩余秒数。

SIGCLD信号

在Linux的多进程编程中,SIGCLD是一个非常重要的信号。当一个子进程退出时,并不是立即释放其占用的资源,而是通知其父进程,由父进程进行后续的工作。在这一过程中,系统将依次产生下列事件。

1)向父进程发送SIGCLD信号,子进程进入zombie(僵尸)状态。

2)父进程接收到SIGCLD信号,进行处理。

如果在上述过程中父进程既没有忽略SIGCLD信号,也未捕获该信号进行处理,则子进程将进入僵尸状态。僵尸状态的进程不能被操作系统调用,也没有任何可执行代码,它不过是占用了进程列表中的一个位置而已。如果仅有几个僵尸进程不会影响系统的运行,但是如果僵尸进程过多,则将会严重影响系统的运行。因此,在编程过程中应避免产生僵尸进程。有两种基本的处理方法可以避免产生僵尸进程:一是父进程忽略SIGCLD信号;二是父进程捕获SIGCLD信号,在信号处理函数中获取子进程的退出状态。忽略信号的方式比较简单,只需要调用signal(SIGCLD,SIG_IGN)语句即可完成。如果要捕获信号并处理,那么先要安装SIGCLD信号,然后在信号处理函数中调用wait或者waitpid等函数获取子进程的退出状态。

时间: 2024-10-21 14:20:57

两个重要信号的相关文章

【技术分享】两线制智能仪表的信号隔离方案_金升阳MORNSUN

摘 要:两线制智能仪表以其应用简单,成本低廉的特点大量地应用于压力.温度等过程参数检测的一次仪表中.然而两线制回路需要同时传输能量和高精度信号,这就使得信号的隔离变得非常困难.本文介绍了两线制回路的基本工作方式.并以此为基础分析了现有无源电流信号隔离器在两线制信号隔离电路中的不足,进而介绍了传输精度更高的基于TS107L-F-2两线制隔离转换器的信号隔离方案及其配电扩展方案.最后针对智能仪表的通信要求介绍了TS107HL-F-2在两线制回路中的Hart信号隔离传输方案. 关键词:智能仪表.两线制

Linux信号详解

Linux信号详解 一 信号的种类 可靠信号与不可靠信号, 实时信号与非实时信号 可靠信号就是实时信号, 那些从UNIX系统继承过来的信号都是非可靠信号, 表现在信号 不支持排队,信号可能会丢失, 比如发送多次相同的信号, 进程只能收到一次. 信号值小于 SIGRTMIN的都是非可靠信号. 非可靠信号就是非实时信号, 后来, Linux改进了信号机制, 增加了32种新的信号, 这些信 号都是可靠信号, 表现在信号支持排队, 不会丢失, 发多少次, 就可以收到多少次. 信号值 位于 [SIGRTM

极好的模拟/数字混合信号的电路板布局布线注意事项

极好的模拟/数字混合信号的电路板布局布线注意事项 PCB设计规范与指南, 电磁兼容 EMC by xfire 文章目录 [显示] 1. 简介 要想了解在使用分辨率等于或高于 12 位 ADC 时可能发生的问题,需要确定 ADC 能够处理多小的电压值.电压范围为 2 V 的 8 位 ADC 能够检测最小电压值为 2 V/256 = 0.008 V,即 8 mV 左右.尽管 8 mV 看上去比较小,让我们把这个值和更高分辨率的 ADC 进行比较,表 1 显示了对具有输入范围为±1 V 和分辨率为 8

谈一下信号分发器的作用及实现方法

信号分发器在很多游戏项目中都有使用,是一种典型的观察者模式.在游戏编程中,客户端的绘制往往需要靠逻辑数据来驱动,绘制通过监听信号等待逻辑的通知.当然了,逻辑模块跟逻辑模块相互之间的通知也可以使用信号.这种编程模式能够简化模块之间的通信问题,不需要引用烦人的指针调用,导致指针满屏飞的情况.C++恶心的地方就是在大型项目中,指针相当多. 那边,实现一个信号分发器需要哪些功能呢?我们知道,所谓的信号通知,无非就是函数调用.监听一个信号,其本质上就是绑定一个指针,这个问题的难点在于函数指针是各式各样的,

linux下 signal信号机制的透彻分析与各种实例讲解

转自:http://blog.sina.com.cn/s/blog_636a55070101vs2d.html 转自:http://blog.csdn.net/tiany524/article/details/17048069 首先感谢上述两位博主的详细讲解. 虽然内容有点长,但是分析的很全面,各种实例应用基本都考虑到了. 本文将从以下几个方面来阐述信号: (1)信号的基本知识 (2)信号生命周期与处理过程分析 (3) 基本的信号处理函数 (4) 保护临界区不被中断 (5) 信号的继承与执行 (

vsync信号产生与分发

以下分析基于android 4.4代码 vsync信号的产生.分发涉及到以下几个类,先主要了解下他们各自的功能: HWComposer:产生hardware vsync,post fb VSyncThread : 如果没有硬件支持,那么通过软件方式模拟hw vsyncDispSync,DispSyncThread: 接受HWComposer的hw vsync信号作为校准,开始模拟产生vsync信号+偏移,并且会不时地进行校准,如postComposition后.EventControlThrea

学习笔记(信号与系统)

学习笔记(信号与系统) 来源:网络 第一章 信号和系统 信号的概念.描述和分类 信号的基本运算 典型信号 系统的概念和分类 1.常常把来自外界的各种报道统称为消息: 信息是消息中有意义的内容: 信号是反映信息的各种物理量,是系统直接进行加工.变换以实现通信的对象. 信号是信息的表现形式,信息是信号的具体内容:信号是信息的载体,通过信号传递信息. 2.系统(system):是指若干相互关联的事物组合而成具有特定功能的整体. 3.信号的描述--数学描述,波形描述. 信号的分类: 1)确定信号(规则信

基于ANN的6种调制信号自动调制识别(2ASK、4ASK、2FSK、4FSK、2PSK、4PSK)

目的: 实现6种(2ASK.4ASK.2FSK.4FSK.2PSK.4PSK)调制信号自动调制识别. 条件:windows 10,MATLAB 2014a 内容: 本实验设计了一个分层结构的MLP神经网络分类器.该分类器使用BP算法,自适应改变判决门限,6种调制信号的整体平均识别率为96.94. 更多内容查看:word版(内附完整源代码)下载地址:http://download.csdn.net/download/lanluyug/9923631 一.数字通信调制信号matlab实现原理 1.1

深入介绍信号和槽

信号和槽机制是Qt编程的基础,它可以让应用程序编程人员把这些互不了解的对象绑定在一起.漕河普通的c++成员函数几乎是一样的—可以是虚函数,可以被重载,可以是公有的.保护的或者私有的.并且也可以被其他c++成员函数直接调用:还有,他们的参数可以任意类型.唯一不同的是:草还有和信号连接在一起,在这种情况下,每当发射这个信号时候,就会自动调用这个槽. connect()语句: connect(sender,SIGNAL(signal),receiver,SLOT(slot)); 一个信号可以连接多个槽