#include <myhead.h>
void *task1(void *arg)
{
int fd1=-1;
int fd2=-1;
if((fd1=open("text.txt",O_RDONLY))==-1)
{
perror("open error");
return NULL;
}
if((fd2=open("txt.txt",O_WRONLY))==-1)
{
perror("open error");
return NULL;
}
int a=lseek(fd1,0,SEEK_END);
char buf[1]="";
lseek(fd1,0,SEEK_SET);
while(1)
{
read(fd1,buf,sizeof(buf));
write(fd2,buf,sizeof(buf));
if(lseek(fd1,0,SEEK_CUR)>=a/2)
{
break;
}
}
close(fd1);
close(fd2);
pthread_exit(NULL);
return NULL;
}
void *task2(void *arg)
{
int fd1=-1;
int fd2=-1;
if((fd1=open("text.txt",O_RDONLY))==-1)
{
perror("open error");
return NULL;
}
if((fd2=open("txt.txt",O_WRONLY))==-1)
{
perror("open error");
return NULL;
}
int a=lseek(fd1,0,SEEK_END);
char buf[1]="";
lseek(fd1,a/2,SEEK_SET);
lseek(fd2,a/2,SEEK_SET);
while(1)
{
if(read(fd1,buf,sizeof(buf))==0)
{
break;
}
write(fd2,buf,sizeof(buf));
}
close(fd1);
close(fd2);
pthread_exit(NULL);
return NULL;
}
int main(int argc, const char *argv[])
{
pthread_t tid=-1;
pthread_t tid1=-1;
int fd=-1;
if(pthread_create(&tid,NULL,task1,NULL)!=0)
{
fprintf(stderr,"pthread_create error\n");
return -1;
}
if(pthread_create(&tid1,NULL,task2,NULL)!=0)
{
fprintf(stderr,"pthread_create error\n");
return -1;
}
pthread_join(tid,NULL);
pthread_join(tid1,NULL);
return 0;
}
先在主函数内定义两个线程号,并且创建两个线程,在定义两个文件拷贝函数,一个复制前半个,一个复制文件后半段