IOday5

 

作业:使用父进程和子经常实现对文件的拷贝

#include<myhead.h>
int main(int argc, const char *argv[])
{
	
	int fd;//定义一个文件标识符
	if((fd=open("./2.c", O_RDONLY))==-1)//判断文件是否打开成功
	{
	perror("open file");
	return -1;
	}
	int fd1;//定义一个文件标识符
	if((fd1=open("./01.txt", O_RDWR | O_CREAT | O_TRUNC,0775))==-1)
	{
	perror("open file");
	return -1;
	}
	
	size_t size_file=lseek(fd,0,SEEK_END);//计算文件大小
	//printf("%ld",size_file);
	lseek(fd,0,SEEK_SET);//将光标移到文件开头

	pid_t pid=fork();//拷贝父进程得到一个子进程
	//判断子进程是否创建成功
	if(pid<0)
	{
	perror("fork ");
	return -1;
	}
	//子进程执行程序
	if(pid==0)
	{
	char str[size_file];
	
	lseek(fd,0,SEEK_SET);//将光标移到文件开头
	lseek(fd1,0,SEEK_SET);//将光标移到文件开头
	read(fd,str,size_file/2);//读取文件1,从开头到文件的一半
	write(fd1,str,size_file/2);//将文件1写到文件2中
	}

	//父进程执行程序
	else if(pid>0)
	{
	char str1[size_file];
	lseek(fd,size_file/2,SEEK_SET);//将光标移到文件中
	lseek(fd1,size_file/2,SEEK_SET);//将光标移到文件中
	read(fd,str1,size_file/2);//读取文件1,从文件的一半到文件结束
	write(fd1,str1,size_file/2);//将文件1写到文件2中

	}

	close(fd);//关闭文件1
	close(fd1);//关闭文件2
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值