linux 实时 写文件,[Linux文件]每隔1秒将时间信息写入文件

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

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

//这是一个使用lseek在一个文件中连续写入字符串的应用

#include 

#include 

#include 

#include 

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

{

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

int fd;                                    //文件描述符

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

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

struct timezone timez;

time_t timetemp;                           //时间结构体变量

int j = 0;

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

gettimeofday(&timeold,&timez);             //取得一个时间信息作为参考时间信息

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

{

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

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

}

fd = open(*(argv+1),O_RDWR|O_CREAT,S_IRWXU); //打开文件如果没有则创建

while(1)   //进入主循环

{

while(1)   //1毫秒延时判断

{

gettimeofday(&timenow,&timez);    //获取当前时间参数

if((timenow.tv_sec - timeold.tv_sec) == 1)  //如果到达一秒

{

timeold = timenow;    //更新保存的时间信息

break;                //1秒时间到,退出

}

}

time(&timetemp);         //获得当前时间参数

sprintf(writebuf,"%s",ctime(&timetemp));     //将当前时间参数放入写缓冲区

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值