前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >时间函数

时间函数

作者头像
看、未来
发布2020-08-26 10:48:02
9050
发布2020-08-26 10:48:02
举报

8.1 alarm

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

函数原型:

代码语言:javascript
复制
unsigned int alarm(unsigned int seconds);

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

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

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

8.2 setitimer

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

函数原型:

代码语言:javascript
复制
#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 文件访问时间
代码语言:javascript
复制
#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

代码语言:javascript
复制
#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

代码语言:javascript
复制
#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 有写没写差别很大

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 8.1 alarm
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档