8.23今日作业

admin2024-08-24  3

8.23今日作业,第1张

 创建子父进程,子进程将1.txt内容拷贝到2.txt中,父进程将3.txt内容拷贝到4.txt中。

#include <myhead.h>

int main(int argc, const char *argv[])
{
	pid_t ID;//子父进程在 fork之后独立运行
	ID = fork();//在main函数中创建子进程
	int fd,fd1;
	if(ID>0)//当ID大于0时属于父进程
	{
		printf("父进程中:%d\n",ID);
		fd = open("./3.txt",O_RDONLY);
		fd1 = open("./4.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
		if(fd==-1)
		{
			perror("open");
			return -1;
		}
		if(fd1==-1)
		{
			perror("open");
			return -1;
		}
		int len = lseek(fd,0,SEEK_END);
		lseek(fd,0,SEEK_SET);

		char s[5];
		read(fd,s,len);
		write(fd1,s,len);

		close(fd);
		close(fd1);

		fd1 = open("./4.txt",O_RDONLY);
		if(fd1==-1)
		{
			perror("open");
			return -1;
		}
		char buf[1024];
		read(fd,buf,len);
		printf("%s\n",buf);
		close(fd1);
		sleep(2);
	}
	else if(ID==0)//当ID==0时是子进程
	{
		printf("\n子进程中ID是:%d\n",ID);
		fd = open("./1.txt",O_RDONLY);
		fd1 = open("./2.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
		if(fd==-1)
		{
			perror("open");
			return -1;
		}
		if(fd1==-1)
		{
			perror("open");
			return -1;
		}
		int len = lseek(fd,0,SEEK_END);
		lseek(fd,0,SEEK_SET);

		char s[5];
		read(fd,s,len);
		write(fd1,s,len);

		close(fd);
		close(fd1);

		fd1 = open("./2.txt",O_RDONLY);
		if(fd1==-1)
		{
			perror("open");
			return -1;
		}
		char buf[1024];
		read(fd,buf,len);
		printf("%s\n",buf);
		close(fd1);
		sleep(1);
	}
	else
	{
		perror("fork");
		return -1;
	}
	return 0;
}

及一个1.txt文件和一个3.txt文件还有2.txt、4.txt两个空文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!