学习Linux环境高级编程中的信号处理中写的秒表计时器。

计时器是用来记录进程的运行时间的,系统会为每个进程记录三个计时器:
真实计时器:程序实际运行的时间
虚拟计时器:程序在用户态所消耗的时间
实用计时器:程序在内核态加用户态所消耗的时间之和
程序的实际运行时间=用户时间+内核时间+睡眠时间

使用计时器设置定时操作:
先设置一个时间a,表示时钟信号在a时间后发生,在设置一个时间b,表示每隔b时间来一次

int getitimer(int which, struct itimerval *curr_value);
功能:设置当前的时钟
which:计时器的类别
ITIMER_REAL/SIGALRM 真实计时器
ITIMER_VIRTUAL/SIGVTALRM 虚拟计时器
ITIMER_PROF/SIGPROF 实用计时器

int setitimer(int which, const struct itimerval *new_value,struct itimerval *old_value);
功能:设置新的时钟
which:计时器的类别
new_value:新设置的计时器
old_value:获取旧的计时器(不需要可以给NULL)

#include<stdio.h>
#include<sys/time.h>
#include<signal.h>
#include<unistd.h>unsigned int msec = 0;void sigalrm(int signum)
{printf("\r%02u:%02u:%03u",(msec/1000/60)%60,msec/1000%60,msec++%1000);fflush(stdout);}void sigint(int signum)
{printf("\r%02u:%02u:%03u\n",(msec/1000/60)%60,msec/1000%60,msec%1000);
}int main()
{signal(SIGINT,sigint);signal(SIGALRM,sigalrm);struct itimerval new_value = {{0,1000},{0,1000}};setitimer(ITIMER_REAL,&new_value,NULL);while(1);
}

Linux操作系统实现秒表计时器相关推荐

  1. Linux 操作系统原理 — 多处理器架构

    目录 文章目录 目录 计算平台体系结构 单核 CPU 和超线程 多核架构的出现 SMP 对称多处理结构 NUMA 非统一内存访问结构 MPP 大规模并行处理结构 Linux 上的 NUMA 基本对象概 ...

  2. linux操作系统下 c语言编程入门

    linux操作系统下 c语言编程入门 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门 ...

  3. [转] linux操作系统下c语言编程入门

    (一)目录介绍 1)Linux程序设计入门--基础知识  2)Linux程序设计入门--进程介绍  3)Linux程序设计入门--文件操作  4)Linux程序设计入门--时间概念  5)Linux程 ...

  4. linux操作系统下c语言编程入门

    linux操作系统下c语言编程入门  整理编写:007xiong  原文:Hoyt等 (一)目录介绍 1)Linux程序设计入门--基础知识  2)Linux程序设计入门--进程介绍  3)Linux ...

  5. Linux操作系统学习笔记(二十)网络通信之TCP协议

    一. 前言   自TCP诞生以来就改变了网络通信的格局,而TCP协议随着网络基础设施的发展也在一路演进,形成了如今庞大复杂的TCP协议簇.如何深入理解TCP的设计理念以及几十年以来TCP协议的演进,有 ...

  6. 【转贴】linux操作系统下c语言编程入门

    [转贴]linux操作系统下c语言编程入门 发信人: Lerry (驴是的念来过倒·杏红等头墙上爬), 信区: Linux 标 题: linux操作系统下c语言编程入门 发信站: 哈工大紫丁香 (Fr ...

  7. 秒表计时器开始计时代码_如何在Windows 10中设置计时器,警报和秒表

    秒表计时器开始计时代码 For whatever reason, Windows did not include alarms, timers, and stopwatches until Windo ...

  8. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍  3)Linux程序设计入门--文件操作  4)Linux程序设计入门--时间概念  5)Linux程序设计入门--信号处理  6)Linux程序设计入门--消 ...

  9. Linux操作系统——基础详解

    目录 Linux操作系统 Linux 简介 Linux 接口 Linux 组成部分 Shell Linux 应用程序 Linux 内核结构 Linux 进程和线程 基本概念 Linux 进程间通信 L ...

最新文章

  1. X射线图像中的目标检测
  2. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #6 使用localmodconfig缩短编译时间...
  3. 正则 -12至+14 闭区间,小数位只能是(0.25,0.5,0.50,0.75,0.0,0.00) 前面的正负符号可选...
  4. 某网SQL注入漏洞实战
  5. 八、前端开发-JavaScript 客户端存储
  6. mysql 基本配置_MySQL 基本配置
  7. mysql 左连接 重复_mysql左连接重复行
  8. python的pass语句_Python | 演示pass语句的示例
  9. 采用install.sh安装脚本进行快速安装astercc
  10. C#绘图双缓冲技术总结(转)
  11. 拓端tecdat|如何用R语言绘制生成正态分布图表
  12. 目前流行的装修风格_目前什么装修风格最流行?
  13. 【深度学习笔记(九)】之物体的分类与定位
  14. 《天池龙珠 - Python训练营》03.Python基础进阶:从函数到高级魔法方法
  15. 想不到验证码背后的故事这么有意思
  16. 注意!多款智能家居Hub存在远程代码执行漏洞
  17. mysql计算均线_MySQL移动平均线 – 4周
  18. 为什么微信语音不能转发?知道真相后才发现我们都错怪了微信!
  19. vue2.0 唤起百度地图app_今天不谈哪个导航好!百度高德二合一APP体验
  20. metalink 使用向导(整理点metalink使用资料)

热门文章

  1. 可以分屏的软件_matepadpro笔记软件体验
  2. Facebook、Google第三方登录(vue)
  3. 计算机bios怎么进入安全模式,安全模式设置-怎样进入bios和安全模式呢?为什么我按F – 手机爱问...
  4. Top Android App使用的组件(二)
  5. Carsim转向系统配置
  6. 直流电压和交流电压的测量
  7. 对计科核心课程的关系的总结
  8. 零基础thinkPHP验证码刷新及验证
  9. java委托设计模式之ComponentUI
  10. 微信读书笔记工具, markdown 导出,可自定义导出格式