[Linux文件]每隔1分钟创建一个文件,并且每隔1秒将当前时间信息写入到文件
//这是一个在参数指定文件中连续写入当前时间的应用//每隔1分钟在当前目录下建立一个新文件,通过tm_sec是否为0来判断//文件以1秒为时间间隔,将当前的时间写入文件,然后回车换行#include<fcntl.h>#include<stdio.h>#include<string.h>#include<sys/time.h>#include<time.h>intmain(intargc,char*argv[]){time_tfiletime;//时间结构体对象structtm*p;//时间结构体指针inttemp,seektemp;//偏移量计算中间量intfd;//文件描述符charwritebuf[50];//写字符串缓冲区charfilenamebuf[10]="File";//文件名称缓冲区chartimebuf[6];//时间缓冲区structtimevaltimenow,timeold;//时间变量structtimezonetimez;intj=0;intwriteCounter=0;//写入计数器if(argc!=1)//如果参数错误{printf("Plzinputthecorrcetfilenameas'./exam39lseekFunfilenamestring'!\n");return1;//如果参数不正确则退出}gettimeofday(&timeold,&timez);//取得一个时间信息作为参考时间信息time(&filetime);//获得时间参数p=localtime(&filetime);//获得时分秒参数,以供创建新文件sprintf(timebuf,"%02d%02d%02d",p->tm_hour,p->tm_min,p->tm_sec);strcat(filenamebuf,timebuf);//创建文件名strcat(filenamebuf,".txt");fd=open(filenamebuf,O_RDWR|O_CREAT,S_IRWXU);//创建文件//fd=open(*(argv+1),O_RDWR|O_CREAT,S_IRWXU);//打开文件如果没有则创建while(1)//进入主循环{while(1)//1毫秒延时判断{gettimeofday(&timenow,&timez);//获取当前时间参数time(&filetime);//获得时间参数p=localtime(&filetime);//获得时分秒参数,以供创建新文件sprintf(timebuf,"%02d%02d%02d",p->tm_hour,p->tm_min,p->tm_sec);//printf("%d:%d:%d\n",p->tm_hour,p->tm_min,p->tm_sec);//时分秒信息放入timebuf缓冲区备用//gettimeofday(&timenow,&timez);//获取当前时间参数if((timenow.tv_sec-timeold.tv_sec)==1)//如果到达一秒{timeold=timenow;//更新保存的时间信息printf("%d:%d:%d\n",p->tm_hour,p->tm_min,p->tm_sec);//printf("p->tm_sec:%02d\n",p->tm_sec);break;//1秒时间到,退出}}if(p->tm_sec==0)//如果是0秒,到1分钟了{charfilenamebuf[]="File";strcat(filenamebuf,timebuf);//创建文件名strcat(filenamebuf,".txt");fd=open(filenamebuf,O_RDWR|O_CREAT,S_IRWXU);//创建文件writeCounter=0;printf("newfilename%s\n",filenamebuf);}time(&filetime);//获得当前时间参数sprintf(writebuf,"%s",ctime(&filetime));//将当前时间参数放入写缓冲区printf("%s",&writebuf);//在屏幕上打印单签writebuf的内容if(writeCounter==0)//第一次写入{temp=write(fd,writebuf,strlen(writebuf));//写入数据seektemp=lseek(fd,0,SEEK_CUR);//获得当前的偏移量writeCounter++;//写入计数器++}else{j=strlen(writebuf)*writeCounter;//获得偏移量seektemp=lseek(fd,j,SEEK_SET);temp=write(fd,writebuf,strlen(writebuf));writeCounter++;}}close(fd);return0;}
已上机测试
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。