#include<head.h>
int main(int argc, const char *argv[])
{
int fd=open("./1.txt",O_RDONLY);
if(fd<0)
{
perror("open");
return -1;
}
printf("open success\n");
int fp=open("./copy.txt",O_WRONLY|O_CREAT|O_TRUNC,0777);
if(fp<0)
{
perror("open");
return -1;
}
struct stat buf;
if(stat("./1.txt",&buf)<0)
{
perror("stat");
return -1;
}
pid_t cpid=fork();
if(cpid>0)
{
lseek(fd,0,SEEK_SET);
lseek(fp,0,SEEK_SET);
char c=0;
for(int i=0;i<buf.st_size/2;i++)
{
read(fd,&c,sizeof(c));
write(fp,&c,sizeof(c));
}
printf("拷贝完毕\n");
}
else if(0==cpid)
{
lseek(fd,buf.st_size/2,SEEK_SET);
lseek(fp,buf.st_size/2,SEEK_SET);
char c=0;
for(int i=buf.st_size/2;i<buf.st_size;i++)
{
read(fd,&c,sizeof(c));
write(fp,&c,sizeof(c));
}
printf("拷贝完毕\n");
}
else
{
perror("fork");
return -1;
}
close(fd);
if(close(fd)<0)
{
perror("close");
return -1;
}
close(fp);
if(close(fp)<0)
{
perror("close");
return -1;
}
printf("close success\n");
return 0;
}
IO 1.4
于 2024-01-04 18:55:18 首次发布
该C程序展示了如何使用`fork`函数和文件描述符进行I/O操作,将./1.txt的内容分为两部分,分别由子进程进行复制到./copy.txt中。
摘要由CSDN通过智能技术生成