实现较为简单系统调用io,删除某行内容,未进行位置定位,lseek,是随便写的值。
/*
实现删除某行
*/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#define SIZEBUF 1024
int main(int argc,char** argv)
{
int fds = open(argv[1],O_RDONLY);
int fdd = open(argv[1],O_RDWR|O_CREAT,O_TRUNC,0666);
int len = 0;
int ret ;
int e;
char buf[SIZEBUF];
printf("%d\n",fds);
off_t t1 = lseek(fds,6,SEEK_SET);
off_t t2 = lseek(fdd,3,SEEK_SET);
while(1)
{
len = read(fds,buf,SIZEBUF);
printf("%d\n",len);
ret = write(fdd,buf,len);
printf("%d\n",ret);
if(ret >0)
{
e = ret;
}
if(len == 0)
{
break;
}
}
truncate(argv[1],e);
close(fdd);
close(fds);
}