IOday4作业

使用两个子进程完成两个文件的拷贝,子进程1拷贝前一半内容,子进程2拷贝后一半内容,父进程用于回收两个子进程的资源

#include

int main(int argc, const char *argv[])
{
	int pid=-1;
	int fd = -1;
	int fa = -1;
	int fb = -1;
	//求出文件大小
	size_t size_fork = -1;
	if((fd = open("./cpy.txt",O_RDONLY))== -1)
	{
		perror("open error");
		return -1;
	}
	size_fork=lseek(fd,0,SEEK_END);
	char str1[100]="0";
	char str2[100]="0";
	//创建第一个子进程
	pid = fork();
	//判断在父进程中再次创建一个子进程
	if(pid > 0)
	{	
		pid = -1;
		//创建第二个子进程
		pid = fork();
		if(pid > 0)
		{
			//父进程——————主文件
			//打开主文件

		}
		else if(pid == 0)
		{
			//子程序——————拷贝文件的下一半
			//打开第一个文件
			if((fa = open("./1.txt",O_WRONLY|O_TRUNC))== -1)
			{
				perror("open error");
				return -1;
			}
			lseek(fd,size_fork/2,SEEK_SET);
			read(fd,str2,size_fork/2);
			write(fa,str2,size_fork/2);
			exit(EXIT_SUCCESS);
			
		}
		else
		{
			perror("fork error");
			return -1;
		}

	}
	else if(pid == 0)
	{
		//子进程—————拷贝主文件的上一半
		//打开二个子文件
		if((fb = open("./2.txt",O_WRONLY|O_TRUNC))==-1)
		{
			perror("open error");
			return -1;
		}
		lseek(fd,0,SEEK_SET);
		read(fd,str1,size_fork/2);
		write(fb,str1,size_fork/2);
		exit(EXIT_SUCCESS);
	}
	else
	{
		perror("fork error");
		return -1;
	}
	wait(NULL);
	wait(NULL);
	close(fd);
	close(fa);
	close(fb);
	return 0;
}

效果图:

IOday4作业_第1张图片

IOday4作业_第2张图片

IOday4作业_第3张图片

你可能感兴趣的:(linux,IO)