定时器 setitimer 和 gettimeofday 获取当前时间【Linux微秒级】

本文介绍了Linux下的setitimer函数用于设置定时器,并解释了其参数、返回值和工作机制,同时展示了使用SIGALRM信号的例子。此外,还详细说明了gettimeofday函数如何获取系统当前时间,包括其参数、返回值,并提供了使用示例。
摘要由CSDN通过智能技术生成

setitimer延时、定时

#include <sys/time.h>
int setitimer(
  int which,
  const struct itimerval * new_value,
  struct itimerval * old_value
);

struct itimerval{
  struct timeval it_interval; //周期执行时间
  struct timeval it_value; //延迟执行时间
};

struct timeval{
  time_t tv_sec; //秒
  suseconds_t tv_usec; //微秒
};

参数

which :
  ITIMER_REAL:以系统真实的时间来计算,送出SIGALRM信号。  ITMER_VIRTUAL:以该进程在用户态下花费的时间来计算,送出SIGVTALRM 信号。
  ITMER_PROF:以该进程在用户态下和内核态下所费的时间来计算,送出SIGPROF信号。

old_value:
  一般置为NULL,用来存储上一次setitimer调用时设置的new_value。

返回值

  调用成功返回0,否则返回-1。

工作机制

it_value倒计时,为0时触发信号,it_value重置为it_interval,继续倒计时,周期执行。

周期执行时,it_value不为0,设置it_interval;
延迟执行时,设置it_value,it_interval为0。

例子

#include <stdio.h>
#include <signal.h>
#include <sys/time.h>
void signalHandler(int signo){
       
	switch (signo){
           
	case SIGALRM:            
		printf("Caught the SIGALRM signal!\n");            
		break;  
	 }
 }
 //延时1微秒便触发一次SIGALRM信号,以后每隔200毫秒触发一次SIGALRM信号。
 int main
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值