完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
信号处理有两种方法,一种是利用signal()函数,另外一种是使用信号集函数。这里主要介绍signal()函数的使用。signal()函数用于获取系统产生的各种信号,并对此信号调用用户自己定义的处理函数,函数原型如下所示: #include typedef void sign(int); sign *signal(int,handler *) ; signal()函数有两个参数,第一个参数指定信号的值,第二个参数是一个函数指针,用于指定针对信号的处理函数的函数地址。 将前面的alARM.c代码中引入信号处理函数signal(),signal.c的代码如下所示: #include #include #include #include void signal_handler() { printf("定时时间结束n"); return; } main() { int number; signal(SIGALRM,signal_handler); alarm(5); for(number=1;number<=10;number++) { printf("时间过去%d秒钟!n",number); sleep(1); } } 该代码依然设置一个5秒钟的定时,与之前的处理方法不同,此处加入了捕获SIGALRM信号的处理函数,当定时5秒到来时,signal()函数捕获了SIGALRM信号并交由signal_handler()函数处理,该信号处理函数打印定时时间结束的提示信息后退出。由于alarm()函数本身不是阻塞函数,其后面的for()循环依然继续运行,运行代表的含义为一个1~10的时间计时。只是在计时5秒钟后加入了一个“定时时间结束”的打印信息。 编译signal.c,生成signal可执行文件后并运行: # gcc –o signal signal.c # ./signal 代码运行效果如下图所示: |
|
相关推荐
|
|
写的好,很感谢你这么明确的告诉我这个函数怎么用
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4877 浏览 0 评论
87372 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4697 浏览 2 评论
3587 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2462 浏览 0 评论
1973浏览 3评论
这是i.mx6ull的关于usb的宏定义,能解释下这些宏定义的意思
1332浏览 1评论
1244浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1312浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1219浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 14:08 , Processed in 1.516670 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号