使用文件IO对图片进行拷贝。要求子进程拷贝后半部分,父进程拷贝前半部分。
int main(int argc, const char *argv[])
{
pid_t pid=fork();
int fd = open("./1.png",O_RDONLY);
if(fd<0)
{
perror("open");
return -1;
}
int fw = open("./2.png",O_RDWR|O_CREAT|O_TRUNC,0775);
if(fw<0)
{
perror("open");
return -1;
}
// off_t num = lseek(fd,0,SEEK_END);
struct stat arr;
if(stat("./1.png",&arr)<0)
{
perror("stat");
return-1;
}
int num = arr.st_size/2;
if(pid>0)
{
sleep(1);
lseek(fd,0,SEEK_SET);
lseek(fw,0,SEEK_SET);
char b;
for(int i=0;i<num;i++)
{
if(read(fd,&b,1)<0)
{
perror("read");
return -1;
}
write(fw,&b,1);
}
}
else if(pid==0)
{
lseek(fd,num,SEEK_END);
lseek(fw,num,SEEK_END);
char c;
for(int i=num;i<arr.st_size;i++)
{
if(read(fd,&c,1)<0)
{
perror("read");
return -1;
}
write(fw,&c,1);
}
}
else
{
perror("read");
return-1;
}
close(fd);