`

linux c学习笔记----信号(alarm,kill,singal)

阅读更多

alarm(设置信号传送闹钟)


相关函数
signal,sleep
表头文件
#include<unistd.h>
定义函数
unsigned int alarm(unsigned int seconds);
函数说明
alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds 为0,则之前设置的闹钟会被取消,并将剩下的时间返回。
返回值
返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0。
范例
#include<unistd.h>
#include<signal.h>
void handler() {
printf(“hello\n”);
}
main()
{
int i;
signal(SIGALRM,handler);
alarm(5);
for(i=1;i<7;i++){
printf(“sleep %d ...\n”,i);
sleep(1);
}
}
 
执行
sleep 1 ...
sleep 2 ...
sleep 3 ...
sleep 4 ...
sleep 5 ...
hello
sleep 6 ...

 



signal(设置信号处理方式)

 

相关函数
sigaction,kill,raise
表头文件
#include<signal.h>
定义函数
void (*signal(int signum,void(* handler)(int)))(int);
函数说明
signal()会依参数signum 指定的信号编号来设置该信号的处理函数。当指定的信号到达时就会跳转到参数handler指定的函数执行。如果参数handler不是函数指针,则必须是下列两个常数之一:
SIG_IGN 忽略参数signum指定的信号。
SIG_DFL 将参数signum 指定的信号重设为核心预设的信号处理方式。

关于信号的编号和说明,请参考附录D
返回值
返回先前的信号处理函数指针,如果有错误则返回SIG_ERR(-1)。
附加说明
在信号发生跳转到自定的handler处理函数执行后,系统会自动将此处理函数换回原来系统预设的处理方式,如果要改变此操作请改用sigaction()。

 

 

 


kill(传送信号给指定的进程)

 

相关函数
raise,signal
表头文件
#include<sys/types.h>
#include<signal.h>
定义函数
int kill(pid_t pid,int sig);
函数说明
kill()可以用来送参数sig指定的信号给参数pid指定的进程。参数pid有几种情况:
pid>0 将信号传给进程识别码为pid 的进程。
pid=0 将信号传给和目前进程相同进程组的所有进程
pid=-1 将信号广播传送给系统内所有的进程
pid<0 将信号传给进程组识别码为pid绝对值的所有进程

参数sig代表的信号编号可参考附录D
返回值
执行成功则返回0,如果有错误则返回-1。
错误代码
EINVAL 参数sig 不合法
ESRCH 参数pid 所指定的进程或进程组不存在
EPERM 权限不够无法传送信号给指定进程
范例
#include<unistd.h>
#include<signal.h>
#include<sys/types.h>
#include<sys/wait.h>
main()
{
pid_t pid;
int status;
if(!(pid= fork())){
printf(“Hi I am child process!\n”);
sleep(10);
return;
}
else{
printf(“send signal to child process (%d) \n”,pid);
sleep(1);
kill(pid ,SIGABRT);
wait(&status);
if(WIFSIGNALED(status))
printf(“chile process receive signal %d\n”,WTERMSIG(status));
}
}
 
执行
sen signal to child process(3170)
Hi I am child process!
child process receive signal 6

 

分享到:
评论

相关推荐

    Linux系统编程学习笔记

    ### Linux系统编程学习笔记 #### 一、IO **1.1 标准I/O (stdio)** - **fopen/fclose**: `fopen` 用于打开或创建一个文件,并返回一个指向该文件的 `FILE *` 类型的指针。`fclose` 用于关闭一个已经打开的文件。...

    C/C++数据结构-二叉树的存储和遍历

    代码实现了二叉树的存储和遍历功能,采用链式存储结构(Node结构体)表示二叉树节点,包含数据域和左右子节点指针。核心功能包括: 创建二叉树:支持递归法通过前序序列(如ABD##E##C#FG###,#表示空节点)动态构建二叉树; 遍历算法: 递归遍历:实现前序、中序、后序遍历(根左右、左根右、左右根); 非递归遍历:基于栈模拟递归过程,完成三种深度优先遍历; 层次遍历:利用队列实现广度优先遍历(BFS)。 内存管理:使用malloc分配节点内存(可优化为C++的new)。 代码通过分离递归与迭代逻辑,全面展示了二叉树的核心操作,但需注意输入处理(如换行符)以避免栈溢出异常。

    cmd-bat-批处理-脚本-jscript-jspopup.zip

    cmd-bat-批处理-脚本-jscript-jspopup.zip

    cmd-bat-批处理-脚本-02.substring.zip

    cmd-bat-批处理-脚本-02.substring.zip

    基于MATLAB的信号处理GUI:AM、DSB、SSB及FM调制解调交互系统设计与实现

    内容概要:本文介绍了基于MATLAB的信号处理GUI人机交互系统,该系统实现了振幅调制AM、双边带调幅信号DSB、单边带信号SSB以及调频FM模拟等调制解调过程。系统设计包括GUI界面设计、信号调制解调算法实现和输入波形及滤波参数调整三个主要部分。通过MATLAB的GUIDE或App Designer工具设计GUI界面,编写相应的MATLAB脚本或函数实现调制解调算法,并允许用户通过GUI调整输入波形和滤波参数。最终,该系统已经过调试并可以直接运行,为信号处理提供了极大的便利,提高了信号处理的效率和准确性。 适合人群:从事信号处理领域的研究人员和技术人员,尤其是熟悉MATLAB的用户。 使用场景及目标:适用于教学演示、实验研究和实际应用中,帮助用户更好地理解和掌握各种调制解调技术的工作原理和实现方法。 其他说明:该系统不仅提供了一种直观的操作界面,还增强了用户对信号处理过程的理解,特别适合用于教育和科研环境。

    cmd-bat-批处理-脚本-字符串工具-indexOf.zip

    cmd-bat-批处理-脚本-字符串工具-indexOf.zip

    cmd脚本-bat批处理-_backup.zip

    cmd脚本-bat批处理-_backup.zip

    COMSOL仿真解析:激光烧蚀靶材中流体传热、水平集与层流的研究

    内容概要:本文详细探讨了使用COMSOL仿真软件对激光烧蚀靶材过程中的流体传热、水平集方法和层流行为进行建模和分析。首先介绍了激光烧蚀技术的背景及其广泛应用,强调了仿真工具在理解激光与靶材相互作用中的重要性。接着分别阐述了流体传热机制、水平集方法在追踪界面演化方面的应用以及层流对热传导的影响。文中还展示了简化的COMSOL代码片段,解释了如何设置物理场接口、材料属性、激光源和边界条件等基本步骤。最后指出,通过这种仿真手段可以有效提升对激光烧蚀过程的理解,为产品优化和科学研究提供支持。 适合人群:从事激光加工、材料科学、流体力学等领域研究的专业人士和技术人员。 使用场景及目标:适用于希望深入了解激光烧蚀过程中物理现象的研究人员,旨在帮助他们掌握COMSOL仿真工具的具体操作方法,以便于开展相关实验前的理论验证和参数预估。 其他说明:文中提供的代码片段仅为示例,实际应用时需根据具体情况进行调整和完善。

    cmd脚本-bat批处理-8.IF-NOT-DEFINED.zip

    cmd脚本-bat批处理-8.IF-NOT-DEFINED.zip

    MBTI人格测评专家提示词并提供答案的AI提示词(AI提示词Prompt).md

    MBTI人格测评专家提示词并提供答案的AI提示词(AI提示词Prompt) # 角色定位:MBTI人格测评专家 - 角色描述:你是专业的MBTI人格理论权威,深谙荣格心理类型理论及16型人格体系,能够通过系统化问题设计精准定位用户人格类型,并提供专业解读与可视化呈现。 ## 背景说明 MBTI理论以荣格提出的两种心理能量倾向(外向E/内向I)与四种心智过程(感知S/直觉N、判断T/情感F、思考J/感知P)为基础,经布里格斯-迈尔斯母女团队深化拓展,将荣格的八种主导心智功能延伸至辅助功能维度,构建出16型人格分类体系。迈尔斯进一步编制标准化测评工具,将抽象心理分析理论转化为可量化的测评体系,旨在揭示个体内在性格本质,为天赋发掘与职业规划提供参考。

    cmd-bat-批处理-脚本-BrowseForFile.zip

    cmd-bat-批处理-脚本-BrowseForFile.zip

    电力系统中SVG无功补偿技术的690V电网电压1.5Mvar容量电力电子仿真及定电压控制策略 IGBT

    内容概要:本文详细介绍了SVG(静态无功功率发生器)在690V电网电压和1.5Mvar容量条件下的电力电子仿真及其定电压控制策略。首先概述了SVG技术的基本原理,强调其快速响应和高精度控制的特点。接着,文章描述了仿真模型的搭建过程,包括主电路和控制电路的设计。随后,重点讲解了定电压控制策略的工作机制,即通过调整IGBT的导通时间来维持电网电压的稳定。最后,展示了仿真实验的具体步骤和结果分析,验证了SVG技术的有效性。 适合人群:从事电力系统研究和技术开发的专业人士,尤其是关注无功补偿技术和电力电子仿真的研究人员。 使用场景及目标:适用于需要深入了解SVG无功补偿技术及其仿真方法的研究人员和技术人员,旨在提升电网的稳定性和可靠性,优化电力系统的性能。 其他说明:文中还提供了简化的Python代码片段,用于演示SVG仿真模型的初始化、运行和数据分析过程。

    cmd-bat-批处理-脚本-mshta-choose.button.zip

    cmd-bat-批处理-脚本-mshta-choose.button.zip

    cmd脚本-bat批处理-cabdir.zip

    cmd脚本-bat批处理-cabdir.zip

    cmd脚本-bat批处理-blender_factory_startup.zip

    cmd脚本-bat批处理-blender_factory_startup.zip

    【新】Matlab指纹识别系统:指纹特征提取及对比系统GUI Matlab

    内容概要:本文详细介绍了基于Matlab的指纹识别系统的设计与实现过程。系统通过八个功能模块——加载指纹、图像分割、均衡化、二值化、细化处理、特征提取(基于欧式距离)、去除噪点(光滑处理)和最终对比分析,实现了指纹图像的处理、特征提取及对比分析。每个功能模块均利用了Matlab强大的图像处理能力,确保了指纹识别的高效性和准确性。最终,系统展示了‘是否是同一个人’及其识别精度。此外,文章还涵盖了GUI设计及其实现,使得整个系统操作简便,用户体验友好。 适合人群:对生物识别技术和图像处理有一定兴趣的研究人员和技术爱好者,尤其是熟悉Matlab的开发者。 使用场景及目标:适用于学术研究、项目开发和个人学习。目标是帮助读者掌握指纹识别的基本原理和技术实现,特别是通过Matlab进行图像处理和GUI设计的具体方法。 其他说明:文中提供的完整GUI代码界面和设计报告模板有助于读者更好地理解和应用所学知识。

    cmd-bat-批处理-脚本-jscript-pdfPageCounter.zip

    cmd-bat-批处理-脚本-jscript-pdfPageCounter.zip

    晶体塑性ABAQUS脚本:自动提取二维三维RVE模型的体积平均应力应变用于材料仿真

    内容概要:本文介绍了一种利用Python脚本在ABAQUS中进行晶体塑性分析的方法,旨在简化并自动化提取代表体积单元(RVE)模型的体积平均应力和应变。文中详细解释了RVE模型的特点及其在二维和三维情况下的不同处理方式,提供了具体的Python代码片段,演示了如何遍历所有单元,计算并保存体积平均应力和应变。此外,还介绍了如何将脚本集成到ABAQUS界面,以及优化计算效率的方法。 适合人群:从事材料科学、固体力学研究的专业人士,特别是那些对晶体塑性和有限元分析有一定了解的研究人员和技术人员。 使用场景及目标:适用于需要频繁处理大量RVE模型数据的研究项目,帮助研究人员快速获取所需的应力应变数据,提高工作效率,减少手动操作的时间成本。 其他说明:文中提到的技术细节对于提升仿真精度和数据分析速度非常有帮助,同时强调了自动化脚本在现代科研工作流程中的重要性。

    基于51单片机的超声波测距原理及Proteus仿真研究

    在电子工程领域,51单片机因其高性价比和广泛的适用性,常被用于初学者和教育场景。超声波测距技术则通过发射超声波并测量其反射回的时间来计算距离,广泛应用于机器人导航、安防系统等领域。本项目结合51单片机和超声波测距技术,采用HC-SR04传感器进行设计,并通过Proteus仿真软件验证方案的可行性。 51系列单片机是Intel公司推出的8位微处理器,具有丰富的外围设备支持。它包含CPU、内存(RAM和ROM)、定时器/计数器、I/O端口等核心组件,能够执行多种控制任务。在本项目中,51单片机主要负责接收和处理HC-SR04传感器的信号,控制超声波的发射与接收。HC-SR04传感器由超声波发射器、接收器和控制电路组成。工作时,单片机向发射器发送特定脉冲,脉冲转化为超声波信号发射出去;当超声波遇到障碍物反射后,接收器接收回波并将其转化为电信号传回单片机。单片机通过计算发射脉冲与接收回波的时间差,利用公式“距离 =(声速×时间)/2”计算距离,其中声速在常温下约为343米/秒。实际应用中,由于超声波传播速度受温度、湿度等因素影响,通常需要进行温度补偿。 Proteus是一款功能强大的电子电路仿真软件,支持多种微处理器和数字逻辑元件的仿真。在本项目中,它用于模拟51单片机与HC-SR04传感器的交互过程,验证程序的正确性。通过Proteus,可以直观地观察超声波的发射和接收过程,以及单片机对信号的处理情况,从而避免实际硬件调试中的诸多不便。在仿真过程中,需先配置好51单片机模型,烧录程序代码,并连接HC-SR04传感器及其他电子元件。通过观察仿真结果,可检查程序逻辑是否正确、超声波发射接收时机是否准确以及距离计算是否无误。若发现问题,可及时调整代码并重新仿真,直至结果满意。 51单片机与HC-SR04传感器结合的超声波测距系统是一种经济实用的解决方案。借助Proteus仿真,可在不涉

    使用谷歌reCAPTCHA的v2和v3 demo代码

    使用谷歌reCAPTCHA的v2和v3 demo代码

Global site tag (gtag.js) - Google Analytics