3day4(进程基础知识)

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


#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#define MAX 100
int main(int argc, const char *argv[])
{

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

	FILE *fp1,*fp2,*fp3,*fp4;
	fp1 = fopen("./1.txt","w");
//思考:输入时包括空格的话,需要循环,那么循环用什么结束呐?

	if(NULL == fp1)
	{
		perror("fopen");
		return -1;
	}
	fp3 = fopen("./3.txt","w");
	if(NULL == fp3)
	{
		perror("fopen");
		return -1;
	}
	char arr[MAX];
	char brr[MAX];
	printf("输入内容到1.txt\n");
	scanf("%s",arr);
	printf("输入内容到3.txt\n");
	scanf("%s",brr);

	fputs(arr,fp1);
	fputs(brr,fp3);
	//char crr[MAX];//验证是否输入成功
	//fgets(crr,sizeof(crr),fp3);
	//printf("\n%s\n",crr);


	fclose(fp1);//关闭文件
	fclose(fp3);
	pid_t WID;
	WID = fork();//分
	if(WID>0)//父进程
	{
		fp3 = fopen("./3.txt","r");//只读打开文件3.txt
		if(NULL == fp3)
		{
			perror("fopen");
			return -1;
		}
		fp4 = fopen("./4.txt","w");//只写方式打开文件4.txt
		if(NULL == fp4)
		{
			perror("fopen");
			return -1;
		}
		char drr[MAX];//承载信息的中间变量
		while(fgets(drr,sizeof(drr),fp3)!=NULL)//读取信息并判断结束条件—>读到文件末尾
		{
			fputs(drr,fp4);//跟随读取,拷贝信息到另一个文件中
		}

	}
	else if(WID==0)//子进程
	{
		fp1 = fopen("./1.txt","r");//只读打开文件1.txt

		if(NULL == fp1)
		{
			perror("fopen");
			return -1;
		}
		fp2 = fopen("./2.txt","w");//只写方式打开文件2.txt

		if(NULL == fp2)
		{
			perror("fopen");
			return -1;
		}
	char drr[MAX];
		while(fgets(drr,sizeof(drr),fp1)!=NULL)
		{
			fputs(drr,fp2);
		}
	}
	else
	{
		perror("fork");
		return -1;
	}

	return 0;
}

思维导图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值