请使用文件IO函数拷贝—张图片(图片就是普通文件,普通文件怎么拷贝,图片就怎么拷贝)要求子进程拷贝后半部分,父进程拷贝前半部分。
ps:是否拷贝成功打开可以打开图形化界面查看,或者使用dif指令--》diff 1.png 2.pngeog 1.png
#include <stdio.h>
#include "/home/ubuntu/head.h"
int main(int argc, const char *argv[])
{
int fd = open("./1.png",O_RDONLY);
if(fd<0)
{
perror("open");
return -1;
}
int fd2 = open("./2.png",O_WRONLY);
if(fd2<0)
{
perror("opne");
return -1;
}
//计算文件大小
struct stat buf;
if(stat("./1.png",&fd)<0)
{
perror("stat");
return -1;
}
//创建一个子进程;
pid_t f=fork();
if(f<0)
{
perror("fork");
return -1;
}
else if(f>0)
{
wait(NULL);
//父进程运行
lseek(fd,0,SEEK_SET);
lseek(fd2,0,SEEK_SET);
char c=0;
for(int i=0;i<buf.st_size/2;i++)
{
read(fd,&c,sizeof(c));
write(fd2,&c,sizeof(c));
}
printf("复制成功\n");
}
else
{
//子进程运行
lseek(fd,buf.st_size/2,SEEK_SET);
lseek(fd2,buf.st_size/2,SEEK_SET);
char c=0;
for(int i=0;i<buf.st_size/2;i++)
{
read(fd,&c,sizeof(c));
write(fd2,&c,sizeof(c));
}
printf("\n");
}
close(fd2);
close(fd);
return 0;
}