#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, const char *argv[])
{
//打开一个文件
int p = open("./t1.png",O_RDONLY);
if(p < 0)
{
perror("open");
return -1;
}
//打开另一个文件
int q = open("./t11.png",O_WRONLY|O_CREAT|O_TRUNC,0664);
if(q < 0)
{
perror("open");
return -1;
}
//创建子进程
pid_t pid = fork();
//计算文件大小
off_t len = lseek(p,0,SEEK_END);
//父
if(pid > 0)
{
sleep(1);
lseek(p,len/2,SEEK_SET);
lseek(q,len/2,SEEK_SET);
char c;
for(int i=len/2;i<len;i++)
{
if(read(p,&c,1) <= 0)
{
return -1;
}
write(q,&c,1);
}
}
//子
else if(0 == pid)
{
lseek(p,0,SEEK_SET);
lseek(q,0,SEEK_SET);
char a;
for(int j=0;j<len/2;j++)
{
if(read(p,&a,1) <= 0)
{
return -1;
}
write(q,&a,1);
}
}
else
{
perror("fork");
return -1;
}
//关毕文件
close(p);
close(q);
return 0;
}