7. 信号的处理问题

int main()
{
    signal(SIGUSR1, sigHandler);     //1.信号的注册,到处理函数
    signal(SIGUSR2, sigHandler);
    while(1)
    {
        sleep(1);
    }
}

void sigHandler(int signum)          //2.处理函数,分发信号给[具体函数]
{
   if (signum==SIGUSR1)
        CatchSigUsr1(signum);

   if (signum==SIGUSR2)
        CatchSigUsr2(signum);
}

void catchSigUsr1(int sig)           //3.具体函数对[具体信号]
{
    printf("SIGUSR1 Caught \n");
}

void catchSigUsr2(int sig)
{
    printf("SIGUSR2 Caught \n");
    exit(0);
}

//1.运行函数   ./a.out &//2.现象是:   SIGUSR1 Caught//2.现象是:   SIGUSR2 Caught  【注:执行后,跳出进程,ps后看不到运行 ./a.out &  的结果】

//另一控制台 kill -USR1 individualProcess//另一控制台 kill -USR2 individualProcess
 
时间: 2024-10-13 17:28:27

7. 信号的处理问题的相关文章

对AM信号FFT的matlab仿真

普通调幅波AM的频谱,大信号包络检波频谱分析 u(t)=Ucm(1+macos ?t)cos ?ct ma称为调幅系数 它的频谱由载波,上下边频组成 , 包络检波中二极管截去负半周再用电容低通滤波,可以得到基带信号,那么,截去负半周后的AM信号必定包含基带信号的频谱.我们可以通过matlab来验证. %已知基带信号为1hz,载波为64hz,调制系数ma=0.3,采样频率1024hz,FFT变换区间N为2048 clear; fs=1024; f=1; %1hz基带信号 fc=64; %64hz载

信号驱动和异步驱动的区别

5种I/O模型: 1.阻塞I/O 2.非阻塞I/O 3.异步I/O 4.信号驱动I/O 5.I/O复用 信号驱动和异步驱动的区别 信号驱动IO是指:进程预先告知内核,使得 当某个socketfd有events(事件)发生时,内核使用信号通知相关进程. 异步IO(Asynchronous IO)是指:进程执行IO系统调用(read / write)告知内核启动某个IO操作,内核启动IO操作后立即返回到进程.IO操作即内核当中的服务例程. 异步I/O和信号驱动I/O的区别很容易被混淆.前者与后者的区

第二十二篇:信号的接收和处理

前言 要想掌握 Linux 系统编程,自然要好好学学其信号机制. 本文介绍一个简单的信号接收处理程序,为后面继续深入学习信号机制打下基础. 什么是信号 信号是软件中断,它提供一种处理异步事件的方法. 信号产生的条件 1. 当用户按某些终端按键时.比如:Ctrl + D / Ctrl + C 等. 2. 硬件异常.比如:除数为 0,无效内存引用等. 3. 调用 kill 函数可以将信号发送给另一个进程或者进程组. 4. 当检测到某种软件条件已经发生时.比如:alarm 到时,网络传来某些带外数据时

第二十三篇:信号机制的两个思考

前言 前文介绍了最基本的信号接收和处理,但这有无可能带来一些问题呢? 本文将通过两个思考,来分析可能带来的问题以及解决方法. 思考一:中断的系统调用 如果用户正在执行系统调用,如 write read.如果这个时候程序跳转到了信号处理函数后返回,则是否重新执行这个系统调用? 结论 这要分情况讨论:如果是磁盘 I/O 的系统调用,则自然需要自动重启:而如果是终端 I/O,则不需要自动重启. 在信号函数族中,有很多函数都是支持设置是否重启选项的.当然,用户也可以使用类似下面的代码自行实现重启: 思考

python运维开发(二十)----models操作、中间件、缓存、信号、分页

内容目录 select Form标签数据库操作 models操作F/Q models多对多表操作 Django中间件 缓存 信号 分页 select Form标签补充 在上一节中我们可以知道Form标签有两个作用,一个做用户提交数据验证,一个是生成HTML标签 在生成HTML标签中可以生成select标签,select的选项数据我们可以在数据库中查询读取到. class UserType(models.Model): caption = models.CharField(max_length=1

Linux信号、信号处理和信号处理函数

信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式.在Linux系统中,根据POSIX标准扩展以后的信号机制,不仅可以用来通知某种程序发生了什么事件,还可以给进程传递数据. 一.信号的来源 信号的来源可以有很多种试,按照产生条件的不同可以分为硬件和软件两种. 1.  硬件方式 当用户在终端上按下某键时,将产生信号.如按下组合键后将产生一个SIGINT信号. 硬件异常产生信号:除数据.无效的存储访问等.这些事件通常由硬件(如:CPU)检测到,并将其通知

RACCommand中的信号

示例: RACSignal* textSignal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { [subscriber sendNext:@(1)]; [subscriber sendNext:@(2)]; [subscriber sendError:[NSError new]]; return nil; }]; RACCommand* textCommad = [[RACCommand

【C/C++学院】(13)QT开发技术/QT 基础/QT 信号和槽

Qt是一个跨平台的c++图形用户界面用用程序框架. Qt安装说明: windows下环境变量path需要加入以下路径,以便QT写的程序可以离开QT开发环境独立运行 C:\Qt\Qt5.2.0\5.2.0\mingw48_32\bin\;C:\Qt\Qt5.2.0\Tools\mingw48_32\bin; linux下需要设置.bash_profile文件 PATH中加入/opt/Qt5.2.0/5.2.0/gcc/bin 用root用户登录系统,进入/usr/lib目录后执行 ln libGL

UNIX环境编程学习笔记(24)——信号处理进阶学习之信号集和进程信号屏蔽字

lienhua342014-11-03 1 信号传递过程 信号源为目标进程产生了一个信号,然后由内核来决定是否要将该信号传递给目标进程.从信号产生到传递给目标进程的流程图如图 1 所示, 图 1: 信号产生.传递到处理的流程图 进程可以阻塞信号的传递.当信号源为目标进程产生了一个信号之后,内核会执行依次执行下面操作, 1. 如果目标进程设置了忽略该信号,则内核直接将该信号丢弃. 2. 如果目标进程没有阻塞该信号,则内核将该信号传递给目标进程,由目标进程执行相对应操作. 3. 如果目标进程设置阻塞

Linux01-BASH脚本编程之信号捕捉及任务计划53

一.脚本编程知识点 1.获取变量中字符的长度:${#VARNAME} 2.变量赋值: a)${parameter:-word}:如果parameter为空或未定义,则变量展开为"word":否则,展开为parameter的值: 如:A=3 echo ${A:-30} unset A echo ${A:-30} b)${parameter:+word}:如果parameter为空或未定义,不做任何操作:否则,则展开为"word"值: 如:echo ${A:+30} A