linux中alarm函数和pause函数详解实例
alarm(time);执行之后告诉内核,让内核在time秒时间之后向该进程发送一个定时信号,然后该进程捕获该信号并处理;
pause()函数使该进程暂停让出CPU,但是该函数的暂停和前面的那个sleep函数的睡眠都是可被中断的睡眠,也就是说收到了中断信号之后再
重新执行该进程的时候就直接执行pause()和sleep()函数之后的语句;
下面是一个定时2秒的实例:
/*************************************************************************
> File Name: alarm.c
> Author:
> Mail:
> Created Time: 2015年11月20日 星期五 21时12分52秒
************************************************************************/ #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h> void sig_handler(int num)
{
printf("receive the signal %d.\n", num);
} int main()
{
signal(SIGALRM, sig_handler); alarm(2); while(1){
pause();
printf("pause is over.\n");
} exit(0);
}

如果我们想程序每2秒都定时一下,这样实现也很简单,我们在处理定时信号的函数中再次定时2秒;实例如下:
/************************************************************************* > File Name: alarm.c > Author: > Mail: > Created Time: 2015年11月20日 星期五 21时12分52秒 ************************************************************************/ #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h> void sig_handler(int num)
{
printf("receive the signal %d.\n", num);
alarm(2);
} int main()
{
signal(SIGALRM, sig_handler);
alarm(2);
while(1){
pause();
printf("pause is over.\n");
}
exit(0);
}

可以看出程序每隔2秒就会收到信号14,也就是SIGALRM信号;并且当处理完该信号之后,直接执行pause()函数下面的语句;说明pause()是可被中断的暂停;



linux中alarm函数和pause函数详解实例的更多相关文章
- Linux中redis安装配置及使用详解
Linux中redis安装配置及使用详解 一. Redis基本知识 1.Redis 的数据类型 字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈 ...
- 转:Linux中find命令-path -prune用法详解
在Windows中可以在某些路径中查找文件,也可以设定不在某些路径中查找文件,下面用Linux中的find的命令结合其-path -prune参数来看看在Linux中怎么实现此功能. 假如在当前目录下 ...
- Linux中rz和sz命令用法详解
http://www.111cn.net/sys/linux/67810.htm 在linux中rz 和 sz 命令允许开发板与主机通过串口进行传递文件了,下面我们就来简单的介绍一下rz 和 sz 命 ...
- Linux中的文件和目录结构详解
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- linux中pip安装步骤与使用详解
pip类似RedHat里面的yum,安装软件非常方便.本节详细介绍pip的安装.以及使用方法,希望文章对各位了解pip的安装与使用带来帮助. 1.pip下载安装1.1 pip下载 代码如下 复制代码 ...
- (转载)linux中设备文件配置程序udev详解
如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略.在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev ...
- linux中的磁盘的MBR记录详解
在硬盘中,硬盘的0柱面0磁头第一个1扇区称为主引导扇区,也叫主引导记录-MBR(main boot record),其中MBR是以下三个部分组成 1.Bootloader,主引导程序---446个字节 ...
- 【转】Linux中history历史命令使用方法详解
原文网址:http://os.51cto.com/art/201205/335040.htm 当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效 ...
- linux中的/usr,/var,/opt目录详解
转自:http://it.greenblogs.org/archives/2008/20113.shtml/ /usr文件系统 /usr 文件系统经常很大,因为所有程序安装在这里. /usr 里的所 ...
- Linux中history历史命令使用方法详解
当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效率获得极大提升.事实上,一旦你掌 握了我在下面给出的15个有关Linux history历史命 ...
随机推荐
- 9、组件注册-@Import-使用ImportSelector
9.组件注册-@Import-使用ImportSelector 9.1 @Import 源码: @Target(ElementType.TYPE) @Retention(RetentionPolicy ...
- 题解 [JOI 2019 Final] 独特的城市
题面 解析 首先有一个结论, 对一个点\(x\)有贡献的城市 肯定在它到离它较远的直径的端点的链上. 假设离它较远的端点是\(S\), 如果有一个点\(u\)不在\(x\)到\(S\)的链上, 却对\ ...
- 用jackson的@JsonProperty注解属性名,会多出一个字段
遇见了这个情况,我的字段定义是xVal,yVal,用的lombok的@Data注解.然后查询到了下面这偏文章,https://bbs.csdn.net/topics/392305619,里面的回答是图 ...
- 007_FreeROTS队列
(一)目的:进程间的通信 (二)队列创建 1. 动态创建队列,函数 xQueueCreate() QueueHandle_t xQueueCreate( UBaseType_t uxQueueLeng ...
- fmt
fmt.Println("hello world") fmt.Printf("%T",a)打印a 的类型 fmt.Printf("%v",a ...
- pat 甲级 1057 Stack(30) (树状数组+二分)
1057 Stack (30 分) Stack is one of the most fundamental data structures, which is based on the princi ...
- python3实现互信息和左右熵的新词发现--基于字典树
字典树 原来讲明白了剩下的就是具体实现了,最适合存储和计算词频的数据结构就是字典树,这里给一个讲解的很清楚的链接 具体代码 代码已开源,需要的点击这个Github
- Cats and Fish HihoCoder - 1631
Cats and Fish HihoCoder - 1631 题意: 有一些猫和一些鱼,每只猫有固定的吃鱼速度,吃的快的猫优先选择吃鱼,问在x秒时有多少完整的鱼和有多少猫正在吃鱼? 题解: 模拟一下. ...
- dosbox+masm汇编环境的安装和使用
1. 下载dosbox安装程序:DOSBox0.74-win32-installer.exe 链接:https://pan.baidu.com/s/1gXPKTT-xKb6BpjOJdhmudA 密码 ...
- NTP 协议介绍
NTP协议 NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步.NTP基于UDP报文进行传输,使用 ...