io day4作业

1.使用多进程完成文件拷贝,子进程1用于拷贝文件前半部分,子进程2用于拷贝文件后半部分,父进程回收所有子进程资源

代码实现:

#include 
int main(int argc, const char *argv[])
{
	//打开一个文件用于拷贝
	int fd=open("./1.text",O_RDWR|O_CREAT,0664);	
	char buf[128]="i love china";
	write(fd,buf,strlen(buf));

	//打开拷贝内容的文件,确保清空
	int sd=open("./copy.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);

	close(fd);
	close(sd);


	//创建子进程1
	int pid1=fork();
	fd=open("./1.text",O_RDONLY);
	sd=open("./copy.txt",O_WRONLY);

	//定义一个size接收文件大小
	int filesize=lseek(fd,0,SEEK_END);

	if(pid1>0)  //父线程
	{
		//创建子进程2
		int pid2=fork();
		if(pid2>0)
		{
			//父进程回收全部子进程的资源
			wait(NULL);
			wait(NULL);
		}
		else if(pid2==0)  //第二个子进程
		{
			//拷贝文件后一半内容
			lseek(fd,filesize/2,SEEK_SET);
			lseek(sd,filesize/2,SEEK_SET);

			char c=0;
			for(int i=filesize/2;i

效果:

io day4作业_第1张图片

你可能感兴趣的:(c语言)