#include <head.h>
int main(int argc, const char *argv[])
{
//打开文件
int fd =open(argv[1],O_RDONLY);
if(fd<0)
{
ERROR("open");
return -1;
}
//创建一个子进程
pid_t cpid=fork();
if(cpid>0)//父
{
int fd_w=open(argv[2],O_WRONLY|O_CREAT|O_APPEND,0777);
if(fd_w<0)
{
ERROR("open");
return -1;
}
off_t size=lseek(fd,0,SEEK_END);
char arr[8]="";
bzero(arr,sizeof(arr));
lseek(fd,0,SEEK_SET);
ssize_t res=0;
while(1)
{
res+=read(fd,arr,1);
if(res==size/2+1)
{
printf("前半读取输出完成\n");
break;
}
write(fd_w,arr,1);
}
close(fd_w);
}
else if(cpid==0)//子
{
sleep(1);
int fd_w=open(argv[2],O_WRONLY|O_CREAT|O_APPEND,0777);
if(fd_w<0)
{
ERROR("open");
return -1;
}
off_t size=lseek(fd,0,SEEK_END);
char arr[8]="";
bzero(arr,sizeof(arr));
lseek(fd,size/2,SEEK_SET);
while(1)
{
ssize_t res=read(fd,arr,1);
if(res==0)
{
printf("后半读取输出完成\n");
break;
}
write(fd_w,arr,1);
}
close(fd_w);
}
close(fd);
return 0;
}
IOday4
最新推荐文章于 2024-09-12 20:58:18 发布