//这是一个在参数指定文件中连续写入当前时间的应用//文件以1秒为时间间隔,将当前的时间写入文件,然后回车换行//这是一个使用lseek在一个文件中连续写入字符串的应用#include<fcntl.h>#include<stdio.h>#include<string.h>#include<sys/time.h>intmain(intargc,char*argv[]){inttemp,seektemp;//偏移量计算中间量intfd;//文件描述符charwritebuf[50];//写字符串缓冲区structtimevaltimenow,timeold;//时间变量structtimezonetimez;time_ttimetemp;//时间结构体变量intj=0;intwriteCounter=0;//写入计数器gettimeofday(&timeold,&timez);//取得一个时间信息作为参考时间信息if(argc!=2)//如果参数错误{printf("Plzinputthecorrcetfilenameas'./exam314ConWriteTimeFunfilenamestring'!\n");return1;//如果参数不正确则退出}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);return0;}