创建子父进程,子进程将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;
}
思维导图