1、用多进程完成两个文件的拷贝
#include<myhead.h>
int main(int argc, const char *argv[])
{
pid_t pid=-1;
FILE *fp=NULL;
FILE *fp2=NULL;
//打开文件
if((fp=fopen(argv[1],"r"))==NULL)
{
perror("fopen error");
return -1;
}
if((fp2=fopen(argv[2],"w"))==NULL)
{
perror("fopen error");
return -1;
}
fseek(fp,0,SEEK_END);
int len=ftell(fp);
char buf[5]="";
//创建一个子进程
pid=fork();
//判断父进程执行
if( pid > 0 )
{
fseek(fp,0,SEEK_SET);
while(1)
{
int res=fread(buf,1,sizeof(buf),fp);
fwrite(buf,1,res,fp2);
int len2=ftell(fp);
if(len2>=len/2)
break;
}
}
else
{
fseek(fp,-len/2,SEEK_END);
while(1)
{
int res=fread(buf,1,sizeof(buf),fp);
fwrite(buf,1,res,fp2);
if(res==0)
break;
}
exit(EXIT_SUCCESS); //会刷新缓冲区
}
//等待回收子进程
wait(NULL);
fclose(fp);
fclose(fp2);
return 0;
}