1.思维导图
2. 创建出三个进程完成两个文件之间拷贝工作,子进程1拷贝前一半内容,子进程2拷贝后一半内容,父进程回收子进程的资源
#include<myhead.h>
int main(int argc, const char *argv[])
{
int fa=-1,fb=-1;
if((fa=open("./test1.txt",O_RDONLY))==-1)
{
perror("open error");
return -1;
}
if((fb=open("./text5.txt",O_WRONLY|O_CREAT|O_TRUNC,0664))==-1)
{
perror("open error");
return -1;
}
int size=lseek(fa,0,SEEK_END);
pid_t pid1=-1;
pid1=fork();
//第一个子进程
if(pid1==0)
{
char buf;
int a=0;
while(a<size/2)
{
read(fa,&buf,1);
a=lseek(fa,0,SEEK_SET);
write(fb,&buf,1);
}
exit(EXIT_SUCCESS);
}
else if(pid1>0)
{
//第二个子进程
pid_t pid2=fork();
if(pid2==0)
{
char buf;
int a=size/2;
while(a!=size)
{
read(fa,&buf,1);
a=lseek(fa,0,SEEK_SET);
write(fb,&buf,1);
}
exit(EXIT_SUCCESS);
}
else if(pid2<0)
{
perror("fork error");
return -1;
}
}
else
{
perror("fork error");
return -1;
}
wait(NULL);
wait(NULL);
printf("已回收子进程资源,拷贝结束\n");
close(fa);
close(fb);
return 0;
}