创建子父进程,子进程将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两个空文件。