1 / 3
文档名称:

UNIX系统开发-系统调用-time系统调用.doc

格式:doc   页数:3
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

UNIX系统开发-系统调用-time系统调用.doc

上传人:管理资源吧 2012/2/6 文件大小:0 KB

下载得到文件列表

UNIX系统开发-系统调用-time系统调用.doc

文档介绍

文档介绍:UNIX系统开发-系统调用-time系统调用
在计算机的硬件中包含一个系统时钟,系统引导的时候读取该时钟,然后维持它自己的时钟计数器,利用时钟计数器对系统内的事件,如文件的创建或用户登录等给出时间记录。时钟值也可以利用time()系统调用供你自己的程序使用:
#include <sys/types/h>
#include (>
time_t time(time_t *loc);
这个系统调用返回一个time_t值,如果参数loc是指向这种类型的变量的指针,则返回值也被拷贝到这个指针所指的变量中。
数据类型time_t实际上由typedef定义,可以通过<>访问,它的基本数据类型是long。因此time()系统调用返回一个长型整数作为当前时钟的时间值,但是,这是一种奇怪格式,即从格林威治时间1970年1月1日午夜起所经过的秒数(我假定这个时钟必定在某一时刻开始...)。
有一个枝节问题是:它用一个长型整数可以记录多长时间?如果限制在32位长的正整数范围内(负值对时间没有任何意义!),则它刚好超过68年,或者说直到2038年初(还有充裕的时间想一个替代办法)。
这种时间格式实际上相当有用,如果你想要解决两个事件之间(例如你的登录时间和退出系统的时间)经过了多长时间,你只要从较早时间减去较晚时间就得到两个事件之间的秒数。
但是,在你想要显示日,月年或者当天的时间的情况下,这种时间格式就不太方便。为了简化这些操作,标准库中包含一些有用的函数为你进行转换。两个这样的函数是:
#include <>
struct tm *gmtime(time_t *loc);
struct tm *localtime(time_t *loc);
这两个函数都取一个参数loc,它是指向包含‘自1970年以来的秒数’值的变量的指针。这里两个函数都返回指向一个结构的指针,该结构的域包含有要求的信息:
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int t