IO基础练习4
一、思维导图
二、练习
#include <head.h>
int main(int argc, const char *argv[])
{
FILE *p=fopen("./1.png","r+");
FILE *q=fopen("./2.png","w+");
if(q==NULL||p==NULL)
PRINT_ERROR("fopen");
char arr[128]={0};
//获得图片文件的大小,取一半
fseek(p,0,SEEK_END);
long size=ftell(p);
long middle_size=size/2;
printf("%ld\n",size);
printf("%ld\n",middle_size);
//创建父子进程
pid_t fo=fork();
int i=0;
rewind(p);
if (fo>0)
{
while(fread(arr,sizeof(char),1,p)>0)
{
if( fwrite(arr,sizeof(char),1,q)==0||i==middle_size)
break;
i++;
}
printf("%d\n",i);
}
// fseek(0,middle_size,SEEK_SET);
//子进程(返回值为0)
if (fo==0)
{
sleep(2);
while(fread(arr,sizeof(char),1,p)>0)
{
if( fwrite(arr,sizeof(char),1,q)==0||i==size)
break;
i++;
}
printf("%d\n",i);
}
//失败返回值为-1
if(fo<0)
PRINT_ERROR("fork");
fclose(p);
fclose(q);
return 0;
}