#include <my_head.h>
pthread_mutex_t mutex;
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 tid1,tid2;
//2.初始化互斥锁
pthread_mutex_init(&mutex,NULL);
//创建两个线程
if(pthread_create(&tid1,NULL,task1,NULL)!=0)
{
printf("tid1 create error\n");
return -1;
}
if(pthread_create(&tid2,NULL,task2,NULL)!=0)
{
printf("tid2 create error\n");
return -1;
}
//足色回收线程资源
pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
//5.销毁锁
pthread_mutex_destroy(&mutex);
return 0;
}