三种不同精度的睡眠

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++定时器制作相关推荐

  1. 用555定时器制作振荡器,单态触发…

    用555定时器制作的单态触发器的电路图如下: 注释:在6引脚电压升高的阶段,2引脚的低电平触发不起作用,只有等到6引脚的充电到Vcc的2/3,使3引脚的电平置底后,2引脚的低电平触发才起作用. 用55 ...

  2. c语言爱心灯制作步骤,如何使用LED和555定时器制作闪烁爱心LED灯

    描述 步骤1:组件 我知道有些物品可能不在电路中,但我向你们保证,我和这条电路都是100%工作 Red Leds - 16或更多 330ohm电阻器 - 1 Wyro板(如图所示) 555定时器IC( ...

  3. 利用随机数与定时器制作的伪随机抓阄游戏

    文章来自:源码在线https://www.shengli.me/javascript/403.html

  4. 29【定时器和延时器】

    定时器和延时器 1.定时器 1.1 基本介绍 setInterval() 函数可以重复调用一个函数,在每次调用之间有固定的时间间隔. Interval:间隔 <!DOCTYPE html> ...

  5. vue中通过定时器设置倒计时,5秒倒计时

    前言:有时候,在项目中,我们经常需要设置简单的倒计时功能,这个可以通过定时器来实现. 一.设置div显示倒计时数字 <div class="countCircle">& ...

  6. 网上经常看到的冒泡排序的动图如何制作

    今天博主想要和大家分享如何实现动态图,经常在其他博主的文章中可以看到各式各样的动图,搜索一下"网上冒泡排序的动图怎么制作出来"可以看到,很迷,全是告诉冒泡排序的原理,以及动图解析, ...

  7. 瑞萨e2studio(15)----外部中断定时器配置输入捕获测量频率

    瑞萨e2studio.15--外部中断&定时器配置输入捕获测量频率 概述 视频教学 csdn课程 完整代码下载 样品申请 硬件准备 开发板 新建工程 工程模板 保存工程路径 芯片配置 工程模板 ...

  8. 51单片机电路原理图_10个定时器精选电路方案带你学习时钟脉冲的工作方式

    可编程控制器中的定时器是根据时钟脉冲累积计时的,时钟脉冲有 1ms.10ms.100ms等不同规格.(定时器的工作过程实际上是对时钟脉冲计数)因工作需要,定时器除了占有自己编号的存储器位外,还占有一个 ...

  9. 10个定时器精选电路方案带你学习时钟脉冲的工作方式

    可编程控制器中的定时器是根据时钟脉冲累积计时的,时钟脉冲有 1ms.10ms.100ms等不同规格.(定时器的工作过程实际上是对时钟脉冲计数)因工作需要,定时器除了占有自己编号的存储器位外,还占有一个 ...

最新文章

  1. R语言ggplot2可视化移除多余的图例信息实战
  2. 是否可以在其范围之外访问局部变量的内存?
  3. SAP生产订单预留相关的备忘录
  4. 《Head First设计模式》第四章笔记 工厂模式
  5. 腾讯云服务器配置ftp~
  6. python字符串转float_令人困惑的python-无法将字符串转换为float
  7. C++原子性实现无锁队列
  8. 浏览器不兼容原因及解决办法
  9. 【jenkins 异常】org.eclipse.jgit.errors.InvalidObjectIdException: Invalid id xxxxx
  10. OrCAD的下载与安装的详细步骤
  11. 基于Python的人脸识别
  12. java mysql体检管理系统源码
  13. 思科无线路由EA6500代理服务器,思科EA6500路由器怎样设置
  14. jscript错误代码及相应解释大全( 选择自 jmylf 的 Blog )
  15. 给神经网络加入先验知识!
  16. 【SD自动记账】SD与FI的集成部分
  17. 代理服务器和IP加速器之间有什么关系?
  18. chrome extensions 中的交互
  19. Unirech阿里云国际版云服务器代充-使用Python批量创建实例
  20. LCD 液晶显示器 ---------- LTDC 控制器

热门文章

  1. 吃了一辈子大米,你还在相信水稻种水里是因为喜欢水?
  2. 复现原文(二):Single-cell RNA sequencing of human
  3. Mac重复文件清理软件—Cisdem Duplicate Finder for mac
  4. uos安装方法_国产UOS(统一操作系统),虚拟机安装体验
  5. thymeleaf select_SpringBoot整合thymeleaf简单的CRUD
  6. 用python计算准确率_分词结果准确率、召回率计算-python(示例代码)
  7. linux 内核 核心代码,8分钟掌握Linux内核分析的核心科技
  8. [10] ADB 修改设置
  9. js禁止粘贴非数字内容
  10. Qt文档阅读笔记-Q_GADGET官方解析及实例