`
jakielong
  • 浏览: 223310 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

4)程序设计入门--时间概念

阅读更多

前言:Linux下的时间概念

这一章我们学习Linux的时间表示和计算函数

时间的表示

时间的测量

计时器的使用

1。时间表示 在程序当中,我们经常要输出系统当前的时间,比如我们使用date命令

的输出结果.这个时候我们可以使用下面两个函数

#include <time.h>;

 

time_t time(time_t *tloc);

char *ctime(const time_t *clock);

time函数返回从1970年1月1日0点以来的秒数.存储在time_t结构之中.不过这个函数的返

回值对于我们来说没有什么实际意义.这个时候我们使用第二个函数将秒数转化为字符串

.. 这个函数的返回类型是固定的:一个可能值为. Thu Dec 7 14:58:59 2000 这个字符串

的长度是固定的为26

2。时间的测量 有时候我们要计算程序执行的时间.比如我们要对算法进行时间分析

..这个时候可以使用下面这个函数.

#include <sys/time.h>;

 

int gettimeofday(struct timeval *tv,struct timezone *tz);

strut timeval {

long tv_sec; /* 秒数 */

long tv_usec; /* 微秒数 */

};

gettimeofday将时间保存在结构tv之中.tz一般我们使用NULL来代替

#include <sys/time.h>
#include <stdio.h>
#include <math.h>
void function()
{
unsigned int i,j;
double y;
for(i=0;i<1000;i++)
for(j=0;j<1000;j++)
y=sin((double)i);
}
main()
{
struct timeval tpstart,tpend;
float timeuse;
gettimeofday(&tpstart,NULL);
function();
gettimeofday(&tpend,NULL);
timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+
tpend.tv_usec-tpstart.tv_usec;
timeuse/=1000000;
printf("Used Time:%f\n",timeuse);
exit(0);
}
 这个程序输出函数的执行时间,我们可以使用这个来进行系统性能的测试,或者是函数算

法的效率分析.在我机器上的一个输出结果是: Used Time:0.556070

3。计时器的使用 Linux操作系统为每一个进程提供了3个内部间隔计时器.

ITIMER_REAL:减少实际时间.到时的时候发出SIGALRM信号.

ITIMER_VIRTUAL:减少有效时间(进程执行的时间).产生SIGVTALRM信号.

ITIMER_PROF:减少进程的有效时间和系统时间(为进程调度用的时间).这个经常和上面一

个使用用来计算系统内核时间和用户时间.产生SIGPROF信号.

具体的操作函数是:

#include <sys/time.h>;

int getitimer(int which,struct itimerval *value);

int setitimer(int which,struct itimerval *newval,

struct itimerval *oldval);

struct itimerval {

struct timeval it_interval;

struct timeval it_value;

}

getitimer函数得到间隔计时器的时间值.保存在value中 setitimer函数设置间隔计时器

的时间值为newval.并将旧值保存在oldval中. which表示使用三个计时器中的哪一个. 

itimerval结构中的it_value是减少的时间,当这个值为0的时候就发出相应的信号了. 然

后设置为it_interval值

#include <sys/time.h>;
#include <stdio.h>;
#include <unistd.h>;
#include <signal.h>;
#include <string.h>;
#define PROMPT "时间已经过去了两秒钟\n\a"
char *prompt=PROMPT;
unsigned int len;
void prompt_info(int signo)
{
write(STDERR_FILENO,prompt,len);
}
void init_sigaction(void)
{
struct sigaction act;
act.sa_handler=prompt_info;
act.sa_flags=0;
sigemptyset(&act.sa_mask);
sigaction(SIGPROF,&act,NULL);
}
void init_time()
{
struct itimerval value;
value.it_value.tv_sec=2;
value.it_value.tv_usec=0;
value.it_interval=value.it_value;
setitimer(ITIMER_PROF,&value,NULL);
}
int main()
{
len=strlen(prompt);
init_sigaction();
init_time();
while(1);
exit(0);
}
 这个程序每执行两秒中之后会输出一个提示.  
分享到:
评论

相关推荐

    Linux-C-programming.rar_linux 程序

    1)Linux程序设计入门--...4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序设计入门--线程操作 8)Linux程序设计入门--网络编程 9)Linux下C开发工具介绍

    Linux操作系统下C语言编程入门

    1)Linux 程序设计入门--...4)Linux 程序设计入门--时间概念 5)Linux 程序设计入门--信号处理 6)Linux 程序设计入门--消息管理 7)Linux 程序设计入门--线程操作 8)Linux 程序设计入门--网络编程 9)Linux 下C开发工具介绍

    linux操作系统下C语言编程入门

    linux操作系统下C语言...4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序设计入门--线程操作 8)Linux程序设计入门--网络编程 9)Linux下C开发工具介绍

    linux下C语言基础

    1)Linux程序设计入门--...4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序设计入门--线程操作 8)Linux程序设计入门--网络编程 9)Linux下C开发工具介绍

    linux下C编程高效手册

    主要介绍Linux下的C语言编程开发。 1)Linux程序设计入门--基础知识 ...4)程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序设计入门--线程操作 等等。。。

    介绍linux下的c语言.pdf

    4)Linux程序设计入门-- 时间概念 ................................................................................19 5)Linux程序设计入门-- 信号处理 .........................................................

    linux程序设计入门

    关于Linux程序设计的知识 Linux程序设计基础知识 进程介绍 文件操作 时间概念 信号处理 线程 网络编程

    C语言入门经典(第4版)--源代码及课后练习答案

    上架时间:2008-4-15 出版日期:2008 年4月 开本:16开 页码:571 版次:4-1 编辑推荐  本书是编程语言先驱者Ivor Horton的经典之作,是C语言方面最畅销的图书品种之一,在世界范围内广受欢迎,口碑极佳。  本书的...

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

    linux操作系统下c语言编程入门1)Linux程序设计入门--基础知识,进程介绍,文件操作,时间概念,信号处理,消息管理,线程操作,网络编程,Linux下C开发工具介绍

    C程序设计语言(第2版·新版中文)

    全面、系统地讲述了C语言的各个特性及程序设计的基本方法,包括基本概念,类型和表达式、控制流、函数与程序结构、指针与数组、结构、输入与输出、UNIX系统接口、标准库等内容。 目录   出版者的话 专家指导委员...

    [Objective-c程序设计].杨正洪等.扫描版

    《Objective-C程序设计》(作者杨正洪、郑齐心、李建国)通过大量的实例系统地介绍了Objective-C语言的基本概念、语法规则、框架、类库及开发环境。读者在阅读本书后,可以掌握Objective-C语言的基本内容,并进行...

    Visual C++ 2005入门经典--源代码及课后练习答案

    他曾在IBM工作多年,能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言),设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工...

    Linux程序设计 第4版.haozip01

    1.2 linux程序设计 4 1.2.1 linux程序 4 1.2.2 文本编辑器 5 1.2.3 c语言编译器 5 1.2.4 开发系统导引 7 1.3 获得帮助 12 1.4 小结 14 第2章 shell程序设计 15 2.1 为什么使用shell编程 15 2.2 一点哲学 16...

    C程序设计教程谭浩强PPT课件

    (4) 过去学习C语言的读者,大多数是学习过其他计算机语言的(如BASIC语言),有初步的程序设计知识,而现在大多数学校把C语言作为第一门计算机语言来学习,学生缺乏程序设计的基础知识。为降低学习难度,本书减少了...

    Linux程序设计 第4版.haozip02

    1.2 linux程序设计 4 1.2.1 linux程序 4 1.2.2 文本编辑器 5 1.2.3 c语言编译器 5 1.2.4 开发系统导引 7 1.3 获得帮助 12 1.4 小结 14 第2章 shell程序设计 15 2.1 为什么使用shell编程 15 2.2 一点哲学 16...

    C#实例程序-30套-程序源码合集.zip

    这份C#实例程序包含了30个实用的示例,涵盖了各种常见的编程场景和技巧。每个示例都经过精心设计和编写,旨在帮助开发者更好地理解和掌握C#...同时,这些示例也可以帮助初学者快速入门C#编程,节省学习和实践的时间。

    JAVA语言程序设计课程教学大纲.doc

    《JAVA语言程序设计》课程教学大纲 一、课程基本信息 课程代码: 课程名称:JAVA语言程序设计 课程性质:专业课 课程类型:必修课 计划学时:72 计划学分:4 适用专业:计算机软件 先修课程:计算机基础 编制时间:...

Global site tag (gtag.js) - Google Analytics