#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函数
本文介绍了一个使用C语言编写的程序,该程序通过父子进程分别实现图片文件的部分读取和完整读取,并将内容写入另一个文件中。文章详细展示了如何使用系统调用如fork(), open(), read(), write()等来完成这一过程。
摘要由CSDN通过智能技术生成