时间函数

8.1 alarm

软定时器 功能:专门为sigalrm信号而设,在指定的时间seconds秒后,将向进程本身发送sigalrm信号,又称为闹钟时间。

函数原型:

unsigned int alarm(unsigned int seconds);

参数释义: seconds为零,那么进程内将不再包含任何闹钟时间。

返回值:如果调用alarm()前,进程中已经设置了闹钟时间,则返回上一个闹钟时间的剩余时间,否则返回0

说明:进程调用alarm后,任何以前的alarm()调用都将无效。

8.2 setitimer

功能:setitimer()比alarm功能强大,支持3种类型的定时器

函数原型:

#include<sys/time.h>

int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue));

参数释义:

第一个参数which指定定时器类型 第二个参数是结构itimerval的一个实例,结构itimerval形式 第三个参数可不做处理。 返回值:成功返回0失败返回-1

itimer_real: 设定绝对时间;经过指定的时间后,内核将发送SIGALRM信号给本进程 itimer_virtual 设定程序执行时间,经过指定的时间后,内核将发送SIGVTALRM信号给本进程 itimer_prof 设定进程执行以及内核因本进程而消耗的时间和,经过指定的时间后,内核将发送SIGPROF信号给本进程

8.3 文件访问时间
#include<sys/types.h>
#include<utime.h>

int utime(const char *name,const struct utiimebuf *times);

//成功返回0,失败返回-1

参数释义:

如果times是一个空指针,则存取时间和修改时间都设置为当前时间 如果times是一个非空指针,则你懂得。当然,权限要够(root是肯定够了)。

此函数所用结构体: struct utimebuf { time_t actime; /* access time / time_t modtime; / modification time */ }

补上前面的代码:

alarm.c

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>

int main(void)
{
	int a=0;
	alarm(1);
	for(;;a++)
	{
		printf("%d\n",a);
	}
	return 0;
}
//可以拿去试试你的电脑能跑多少,反正我的只能四万多

seitimer.c

#include <stdio.h>
#include <sys/time.h>
#include <errno.h>
#include <stdlib.h>
#include <signal.h>

void myfunc()
{
	int count = 0;
	for(count =  0; ;count++)
	{		
			printf("yue?\n");
	}
}

int main()
{
	struct itimerval run,runout; 

	signal(SIGALRM,myfunc);

	run.it_value.tv_sec = 3;
	run.it_value.tv_usec = 0;
	run.it_interval.tv_sec = 2;
	run.it_interval.tv_usec = 0;
	

	if((setitimer(ITIMER_REAL,&run,&runout))==-1)
	{
		perror("setitimer error");
		return -1;	
	}	
	
	while(1);
	return 0;
}

这里提一下,在Linux里面那个缓冲区是很重要的,所以那个 \n 有写没写差别很大

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 学以致用C++设计模式 之 “门面模式“

    之前一直以为,把模块内聚封装起来叫”模板方法模式“,看来是我狭隘了。模板方法模式是将一组算法封装在一起,组成一个对外接口函数,而”门面模式“(我以前叫它”外观模...

    看、未来
  • 【奇技淫巧】-- 走地图的不同路径

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。

    看、未来
  • 【LeetCode两题选手】算法类题目(8.8)

    看、未来
  • P1631 序列合并

    题目描述 有两个长度都是N的序列A和B,在A和B中各取一个数相加可以得到 个和,求这 个和中最小的N个。 输入输出格式 输入格式: 第一行一个正整数N; 第...

    attack
  • P2733 家的范围 Home on the Range

    题目背景 农民约翰在一片边长是N (2 <= N <= 250)英里的正方形牧场上放牧他的奶牛。(因为一些原因,他的奶牛只在正方形的牧场上吃草。)遗憾的是,他的...

    attack
  • HDU-5534-Partial Tree

    ACM模版 描述 ? 题解 image.png 代码 #include <iostream> #include <cstdio> #include <algor...

    f_zyj
  • Java中利用Math.random()产生服从泊松分布的随机数

    forrestlin
  • BZOJ2957: 楼房重建(分块)

    自己YY出了一个\(n \sqrt{n} \log n\)的辣鸡做法没想到还能过。。

    attack
  • 今日头条屏幕适配方案终极版正式发布!前言方案对比AndroidAutoSize总结

    我在前面两篇文章中详细介绍了 今日头条适配方案 和 SmallestWidth 限定符适配方案 的原理,并验证了它们的可行性,以及总结了它们各自的优缺点,可以说...

    用户2965681
  • 排列

    用1,2,3,...,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求 abc:def:ghi =1:2:3。

    Vincent-yuan

扫码关注云+社区

领取腾讯云代金券