Linux一分钟后建立文件夹,[Linux文件]每隔1分钟创建一个文件,并且每隔1秒将当前时间信息写入到文件...

[Linux文件]每隔1分钟创建一个文件,并且每隔1秒将当前时间信息写入到文件

发布时间:2020-04-01 10:55:11

来源:51CTO

阅读:946

作者:银河星君

//这是一个在参数指定文件中连续写入当前时间的应用

//每隔1分钟在当前目录下建立一个新文件,通过tm_sec是否为0来判断

//文件以1秒为时间间隔,将当前的时间写入文件,然后回车换行

#include 

#include 

#include 

#include 

#include

int main(int argc,char *argv[])

{

time_t filetime;//时间结构体对象

struct tm *p;//时间结构体指针

int temp,seektemp;                         //偏移量计算中间量

int fd;                                    //文件描述符

char writebuf[50];                        //写字符串缓冲区

char filenamebuf[10] = "File";             //文件名称缓冲区

char timebuf[6];                          //时间缓冲区

struct timeval timenow,timeold;            //时间变量

struct timezone timez;

int j = 0;

int writeCounter = 0;                      //写入计数器

if(argc!= 1)                               //如果参数错误

{

printf("Plz input the corrcet file name as './exam39lseekFun filename string'!\n");

return 1;//如果参数不正确则退出

}

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分钟了

{

char filenamebuf[]= "File";

strcat(filenamebuf,timebuf);//创建文件名

strcat(filenamebuf,".txt");

fd=open(filenamebuf,O_RDWR|O_CREAT,S_IRWXU);//创建文件

writeCounter=0;

printf("new filename %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);

return 0;

}

已上机测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值