#include<stdio.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<unistd.h>
#include<fcntl.h>
#include<string.h>
int main(int argc, const char *argv[])
{
int pen=open("1.png",O_RDONLY);
if(pen<0)
{
perror("open");
return -1;
}
int peng=open("3.png",O_WRONLY);
if(pen<0)
{
perror("open");
return -1;
}
pid_t pi=fork();
char arr;
off_t lse=lseek(pen,0,SEEK_END);
ssize_t ssiz=0;
if(pi==0)
{
lseek(pen,lse/2,SEEK_SET);
lseek(peng,lse/2,SEEK_SET);
off_t lse1=0;
while(1)
{
ssiz=read(pen,&arr,1);
if(ssiz==0)
break;
write(peng,&arr,1);
}
}
if(pi>0)
{
sleep(2);
lseek(pen,0,SEEK_SET);
lseek(peng,0,SEEK_SET);
for(int i=0;i<lse/2;i++)
{
// memset(arr,0,sizeof(arr));
read(pen,&arr,sizeof(arr));
write(peng,&arr,1);
}
}
if(close(pen)<0)
{
perror("close");
return -1;
}
if(close(peng)<0)
{
perror("close");
}
}
练习要求拷一张图片,子进程拷贝后半部分,父进程再拷贝前半部分;可以使用sleep函数
最新推荐文章于 2024-08-24 15:52:22 发布