创建子父进程,子进程将1.txt内容拷贝到2.txt中,父进程将3.txt内容拷贝到4.txt中。
#include <myhead.h>
int main(int argc, const char *argv[])
{
pid_t ID;
ID = fork();
if(ID>0)//父进程
{
printf("父进程ID:%d\n",ID);
int fd = open("3.txt",O_RDONLY);//只读打开
int fd1 = open("4.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);//只写打开
if(fd == -1 && fd1 == -1)
{
perror("");
return -1;
}
while(1)
{
char ch[5] = {0};
int len = read(fd,ch,sizeof(ch));//读取字符串
write(fd1,ch,len);//写入字符串
if(len != sizeof(ch))
{
break;
}
}
close(fd);
close(fd1);
fd1 = open("4.txt",O_RDONLY);
char str[32] = {0};
read(fd1,str,sizeof(str));//看写入的内容
printf("%s",str);
puts("**************");
}
//子父进程独立进行
else if(ID == 0)//子进程
{
printf("子进程ID:%d\n",ID);
int fd = open("1.txt",O_RDONLY);
int fd1 = open("2.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
if(fd == -1 && fd1 == -1)
{
perror("");
return -1;
}
while(1)
{
char ch[5] = {0};
int len = read(fd,ch,sizeof(ch));
write(fd1,ch,len);
if(len != sizeof(ch))
{
break;
}
}
close(fd);
close(fd1);
fd1 = open("2.txt",O_RDONLY);
char str[32] = {0};
read(fd1,str,sizeof(str));
printf("%s",str);
}
else
{
perror("fork");
return -1;
}
return 0;
}
运行结果
整理整理