C语言中settimeofday函数和gettimeofday函数的使用

C语言settimeofday()函数:设置当前时间戳
头文件:

#include <sys/time.h>  #include <unistd.h>

定义函数:

int settimeofday(const struct timeval *tv, const struct timezone *tz);

函数说明:settimeofday()会把目前时间设成由tv 所指的结构信息,当地时区信息则设成tz 所指的结构。详细的说明请参考gettimeofday()。

注意,在Linux下,只有root 权限才能使用此函数修改时间。

返回值:成功则返回0,失败返回-1,错误代码存于errno。

错误代码:
EPERM  并非由root 权限调用settimeofday(),权限不够。
EINVAL  时区或某个数据是不正确的,无法正确设置时间。

C语言gettimeofday()函数:获取当前时间
头文件:

#include <sys/time.h>  #include <unistd.h>

定义函数:int gettimeofday (struct timeval * tv, struct timezone * tz);

函数说明:gettimeofday()会把目前的时间有tv 所指的结构返回,当地时区的信息则放到tz 所指的结构中。

timeval 结构定义为:

struct timeval{
  long tv_sec; //秒
  long tv_usec; //微秒
};

timezone 结构定义为:

struct timezone
{
  int tz_minuteswest; //和Greenwich 时间差了多少分钟
  int tz_dsttime; //日光节约时间的状态
};

上述两个结构都定义在/usr/include/sys/time.h. tz_dsttime 所代表的状态如下

  DST_NONE //不使用
  DST_USA //美国
  DST_AUST //澳洲
  DST_WET //西欧
  DST_MET //中欧
  DST_EET //东欧
  DST_CAN //加拿大
  DST_GB //大不列颠
  DST_RUM //罗马尼亚
  DST_TUR //土耳其
  DST_AUSTALT //澳洲(1986 年以后)

返回值:成功则返回0,失败返回-1,错误代码存于errno。

附加说明:EFAULT 指针tv 和tz 所指的内存空间超出存取权限。

范例

#include <sys/time.h>
#include <unistd.h>
main(){
  struct timeval tv;
  struct timezone tz;
  gettimeofday (&tv, &tz);
  printf("tv_sec; %d\n", tv.tv_sec);
  printf("tv_usec; %d\n", tv.tv_usec);
  printf("tz_minuteswest; %d\n", tz.tz_minuteswest);
  printf("tz_dsttime, %d\n", tz.tz_dsttime);
}

执行结果:

tv_sec: 974857339
tv_usec:136996
tz_minuteswest:-540
tz_dsttime:0
(0)

相关推荐

  • 详解C语言中的getgrgid()函数和getgrnam()函数

    C语言getgrgid()函数:从组文件中取得指定gid的数据 头文件: #include <grp.h> #include <sys/types.h> 定义函数: strcut group * getgrgid(gid_t gid); 函数说明:getgrgid()用来依参数gid 指定的组识别码逐一搜索组文件, 找到时便将该组的数据以group 结构返回. 返回值:返回 group 结构数据, 如果返回NULL 则表示已无数据, 或有错误发生. 范例 /* 取得gid=3 的组

  • C语言中正切的相关函数总结

    C语言tan()函数:正切函数 头文件: #include <math.h> tan() 函数用来求给定值的正切值,其原型为: double tan(double x); [参数]x 为给定的弧度值. [返回值]返回 x 的正切值. 注意,使用 GCC 编译时请加入-lm. 请看下面的代码: #include <math.h> main(){ double answer = tan(0.5); printf("tan(0.5) = %f\n", answer);

  • 用C语言求幂函数和指数函数的方法

    C语言pow()函数:求x的y次方(次幂) 头文件: #include <math.h> pow() 函数用来求 x 的 y 次幂(次方),其原型为: double pow(double x, double y); pow()用来计算以x 为底的 y 次方值,然后将结果返回.设返回值为 ret,则 ret = xy. 可能导致错误的情况: 如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error 错误. 如果底数 x 和指数 y 都是 0,可能会导致 domain err

  • C语言中strlen() strcpy() strcat() strcmp()函数的实现方法

    strlen函数原型:unsigned int strlen(const char *);返回的是字符串中第一个\0之前的字符个数. 1.strcat函数原型char* strcat(char* dest,const char* src); 进行字符串的拼接,将第二个字符串连接到第一个字符串中第一个出现\0开始的地方.返回的是拼接后字符的首地址.并不检查第一个数组的大小是否可以容纳第二个字符串.如果第一个数组的已分配的内存不够容纳第二个字符串,则多出来的字符将会溢出到相邻的内存单元. 2.str

  • 浅谈C语言中strcpy,strcmp,strlen,strcat函数原型

    实例如下: //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, const char *strSrc) { char *res=strDest; assert((strDest!=NULL)&&(strSrc!=NULL)); while(*strDest)strDest++; while(*strDest=*strSrc) { strDest++; strSrc

  • R语言中的fivenum与quantile()函数算法详解

    fivenum()函数: 返回五个数据:最小值.下四分位数数.中位数.上四分位数.最大值 对于奇数个数字=5,fivenum()先排序,依次返回最小值.下四分位数.中位数.上四分位数.最大值 > fivenum(c(1,12,40,23,13)) [1] 1 12 13 23 40 对于奇数个数字>5,fivenum()先排序,我们可以求取最小值,最大值,中位数.在排序中,最小值与中位数中间,若为奇数,取其中位数为下四分位数,若为偶数,取最中间两个数的平均值为下四分位数:在排序中,中位数与最大

  • 详解C语言中sizeof如何在自定义函数中正常工作

    1.在main函数中,sizeof是可以正常工作的,比如: int main() { int n[5]; printf("input: \n"); int i ; for(i = 0; i < 5; i++) { scanf("%d",n + i); } int len = sizeof(n)/sizeof(n[0]); printf("%d\n",len); return 0; } 2.但是在自定义函数中就不可以了,如下: #includ

  • C语言中settimeofday函数和gettimeofday函数的使用

    C语言settimeofday()函数:设置当前时间戳 头文件: #include <sys/time.h> #include <unistd.h> 定义函数: int settimeofday(const struct timeval *tv, const struct timezone *tz); 函数说明:settimeofday()会把目前时间设成由tv 所指的结构信息,当地时区信息则设成tz 所指的结构.详细的说明请参考gettimeofday(). 注意,在Linux下

  • 举例详解Go语言中os库的常用函数用法

    (f *File).Name()这个函数是返回文件的名称,函数原型func (f *File) Name() string要文件的指针操作,返回字符串,感觉比较鸡助的方法底层实现 复制代码 代码如下: func (f *File) Name() string { return f.name }  import (  "fmt"  "os" ) func main() {  f, _ := os.Open("1.go")  fmt.Println(

  • 浅析C语言中的setjmp与longjmp函数

    setjmp和longjmp是C语言独有的,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理. 先来看一下这两个函数的定义吧: setjmp和longjmp的函数原型在setjmp.h中 函数原型:int setjmp(jmp_buf envbuf); setjmp函数用缓冲区envbuf保存系统堆栈的内容,以便后续的longjmp函数使用.setjmp函数初次启用时返回0值. void longjmp(jmp_buf

  • C语言中socket相关网络编程函数小结

    C语言socket()函数:建立一个socket通信 头文件: #include <sys/types.h> #include <sys/socket.h> 定义函数: int socket(int domain, int type, int protocol); 函数说明:socket()用来建立一个新的socket, 也就是向系统注册, 通知系统建立一通信端口. 参数domain 指定使用何种的地址类型, 完整的定义在/usr/include/bits/socket.h 内,

  • Go语言中append函数用法分析

    本文实例分析了Go语言中append函数用法.分享给大家供大家参考.具体如下: Go语言中append的功能十分强大,使用它可以使很多功能的实现变得更加简洁.以下为简单对比: .将一个slice插入到另一个slice的指定位置: 不使用append: 复制代码 代码如下: func insertSliceAtIndex(slice_origin []int, slice_to_insert []int,      insertIndex int) (result []int, err error

  • 详解C语言中rand函数的使用

    前言 我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的rand函数,生成的也是伪随机数. c语言之rand函数的使用 1.写入头文件 #include <stdlib.h> #include <stdio.h> #include <time.h> 2.变量的定义 void main( void ) { int i,k; 3.sran

随机推荐