C/C++定时器制作
三种不同精度的睡眠
unsigned int sleep(unsigned int seconds); //睡眠多少秒,睡眠被信号中断,返回剩余的睡眠时间
int usleep(useconds_t usec); //睡眠多少微秒,
int nanosleep(const struct timespec *req,struct timespec *rem); //睡眠多少纳秒,第一个参数请求睡眠时间,第二个参数是剩余多少时间
三种时间结构
time_t //秒
struct timeval{
long tv_sec; //秒
long tv_usec; //微秒
};
struct timespec{
time_t tv_sec; //秒
long tv_nsec;//纳秒
};
setitmer 定时器的使用
包含头文件<sys/time.h>
功能setitime()比alarm功能强大,支持3种类型的定时器
原型:
int setitimer(int which,const struct itimerval *value,struct itimerval *ovalue);
参数:
第一个参数which指定定时器类型
第二个参数是结构体ittimerval的一个实例,结构itimerval形式
第三个参数可不做处理
返回值:成功返回0,失败返回-1
第一个参数:
ITIMER_REAL:经过指定的时间后,内核将发送SIGALRM信号给本进程
ITIMER_VIRTUAL:程序在用户空间执行指定的时间后,内核将发送SIGVTALRM信号给本进程
ITIMER_PROF:进程在内核空间中执行时,时间计数会减少,通常与ITMER_VIRTUAL共用,代表进程在用户空间与内核空间中运行指定时间后,内核将发送SIGPROF信号给本进程。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <dirent.h>
#include <signal.h>
#include <sys/wait.h>
#include <sys/time.h>
#define ERR_EXIT(m) \do \{ \perror(m); \exit(EXIT_FAILURE); \}while(0)static int count = 0;void set_timer()
{ struct itimerval itv; itv.it_interval.tv_sec = 1; //设置为1秒itv.it_interval.tv_usec = 0; itv.it_value.tv_sec = 1; //设置1秒后输出itv.it_value.tv_usec = 0; setitimer(ITIMER_REAL, &itv, NULL); //此函数为linux的api,不是c的标准库函数
} void handler(int sig)
{printf("recv a sig= %d\n",sig);
}void signal_handler(int m)
{ count ++; printf("%d\n", count);
}int main()
{if(signal(SIGALRM,signal_handler)==SIG_ERR){ERR_EXIT("signal error");}set_timer();for(;;){pause();}return 0;
}
C/C++定时器制作相关推荐
- 用555定时器制作振荡器,单态触发…
用555定时器制作的单态触发器的电路图如下: 注释:在6引脚电压升高的阶段,2引脚的低电平触发不起作用,只有等到6引脚的充电到Vcc的2/3,使3引脚的电平置底后,2引脚的低电平触发才起作用. 用55 ...
- c语言爱心灯制作步骤,如何使用LED和555定时器制作闪烁爱心LED灯
描述 步骤1:组件 我知道有些物品可能不在电路中,但我向你们保证,我和这条电路都是100%工作 Red Leds - 16或更多 330ohm电阻器 - 1 Wyro板(如图所示) 555定时器IC( ...
- 利用随机数与定时器制作的伪随机抓阄游戏
文章来自:源码在线https://www.shengli.me/javascript/403.html
- 29【定时器和延时器】
定时器和延时器 1.定时器 1.1 基本介绍 setInterval() 函数可以重复调用一个函数,在每次调用之间有固定的时间间隔. Interval:间隔 <!DOCTYPE html> ...
- vue中通过定时器设置倒计时,5秒倒计时
前言:有时候,在项目中,我们经常需要设置简单的倒计时功能,这个可以通过定时器来实现. 一.设置div显示倒计时数字 <div class="countCircle">& ...
- 网上经常看到的冒泡排序的动图如何制作
今天博主想要和大家分享如何实现动态图,经常在其他博主的文章中可以看到各式各样的动图,搜索一下"网上冒泡排序的动图怎么制作出来"可以看到,很迷,全是告诉冒泡排序的原理,以及动图解析, ...
- 瑞萨e2studio(15)----外部中断定时器配置输入捕获测量频率
瑞萨e2studio.15--外部中断&定时器配置输入捕获测量频率 概述 视频教学 csdn课程 完整代码下载 样品申请 硬件准备 开发板 新建工程 工程模板 保存工程路径 芯片配置 工程模板 ...
- 51单片机电路原理图_10个定时器精选电路方案带你学习时钟脉冲的工作方式
可编程控制器中的定时器是根据时钟脉冲累积计时的,时钟脉冲有 1ms.10ms.100ms等不同规格.(定时器的工作过程实际上是对时钟脉冲计数)因工作需要,定时器除了占有自己编号的存储器位外,还占有一个 ...
- 10个定时器精选电路方案带你学习时钟脉冲的工作方式
可编程控制器中的定时器是根据时钟脉冲累积计时的,时钟脉冲有 1ms.10ms.100ms等不同规格.(定时器的工作过程实际上是对时钟脉冲计数)因工作需要,定时器除了占有自己编号的存储器位外,还占有一个 ...
最新文章
- R语言ggplot2可视化移除多余的图例信息实战
- 是否可以在其范围之外访问局部变量的内存?
- SAP生产订单预留相关的备忘录
- 《Head First设计模式》第四章笔记 工厂模式
- 腾讯云服务器配置ftp~
- python字符串转float_令人困惑的python-无法将字符串转换为float
- C++原子性实现无锁队列
- 浏览器不兼容原因及解决办法
- 【jenkins 异常】org.eclipse.jgit.errors.InvalidObjectIdException: Invalid id xxxxx
- OrCAD的下载与安装的详细步骤
- 基于Python的人脸识别
- java mysql体检管理系统源码
- 思科无线路由EA6500代理服务器,思科EA6500路由器怎样设置
- jscript错误代码及相应解释大全( 选择自 jmylf 的 Blog )
- 给神经网络加入先验知识!
- 【SD自动记账】SD与FI的集成部分
- 代理服务器和IP加速器之间有什么关系?
- chrome extensions 中的交互
- Unirech阿里云国际版云服务器代充-使用Python批量创建实例
- LCD 液晶显示器 ---------- LTDC 控制器
热门文章
- 吃了一辈子大米,你还在相信水稻种水里是因为喜欢水?
- 复现原文(二):Single-cell RNA sequencing of human
- Mac重复文件清理软件—Cisdem Duplicate Finder for mac
- uos安装方法_国产UOS(统一操作系统),虚拟机安装体验
- thymeleaf select_SpringBoot整合thymeleaf简单的CRUD
- 用python计算准确率_分词结果准确率、召回率计算-python(示例代码)
- linux 内核 核心代码,8分钟掌握Linux内核分析的核心科技
- [10] ADB 修改设置
- js禁止粘贴非数字内容
- Qt文档阅读笔记-Q_GADGET官方解析及实例