实现类似日志的操作
* 1,文件的大小不得超过 size
* 2,可以不断接受输入并写入文件,保持最新的输入在文件内,
文件写满的时候从旧的内容开始清除和覆盖。
* 3,可以读出当前文件内的所有记录。
*/
#include
#include
#include
#include
#include
#define FILESIZE 100
int main(int argc,char *argv[])
{
int fb1,fb2,index,size;
int buf1[2];
char *buf2;
if((fb1 = open(argv[1],O_RDONLY)) == -1)
{
fb1 = open(argv[1],O_CREAT,0777);
fb2 = open(argv[2],O_RDWR|O_CREAT,0777);
index = 0;
size = 0;
buf1[1] = index;
buf1[2] = size;
write(fb1,buf1,8);
}
else
{
fb1 = open(argv[1],O_RDWR);
fb2 = open(argv[2],O_RDWR);
}
lseek(fb2,index,0);
read(fb1,buf1,8);
index = buf1[1];
size = buf1[2];
if((index+sizeof(argv[3])-1)<=FILESIZE)
{
write(fb2,buf2,(sizeof(argv[3])-1));
buf2 = argv[3];
if((size+sizeof(argv[3])-1)>=FILESIZE)
{
size = FILESIZE;
}
else
{
size = size + sizeof(argv[3])-1;
}
buf1[1] = index;
buf1[2] = size;
write(fb1,buf1,8);
}
else
{
write(fb2,buf2,(FILESIZE-index));
lseek(fb2,0,0);
write(fb2,buf2,(sizeof(argv[3])+index-FILESIZE));
buf1[1] = lseek(fb2,0,1);
buf1[2] = FILESIZE;
}
close(fb1);
close(fb2);
return 0;
}
Yohcc 于 2013-10-09 08:50:51发表:
帮顶下
wangjinwen 于 2013-10-09 08:19:45发表:
新人学习中