创建子父进程,子进程拷贝文件的前一半,父进程拷贝后一半。
#include<myhead.h>
int main(int argc, const char *argv[])
{int pid=fork();int fd_src=open("src.txt",O_RDONLY);int size=lseek(fd_src,0,SEEK_END);int mid_size=size/2;if(pid>0){lseek(fd_src,0,SEEK_SET);int fd_des1=open("des1.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);char *buff=malloc(sizeof(char)*mid_size);int res=read(fd_src,buff,mid_size);write(fd_des1,buff,res);close(fd_des1);close(fd_src);printf("pid:%d--ok\n",getpid());}else if(pid==0){int mid=size-mid_size;lseek(fd_src,mid,SEEK_SET);int fd_des2=open("des2.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);char *buff=malloc(sizeof(char)*(size-mid_size));int res=read(fd_src,buff,size-mid_size);write(fd_des2,buff,res);close(fd_des2);close(fd_src);free(buff);printf("pid:%d--ok\n",getpid());}else{perror("fork");return -1;}return 0;
}

创建子父进程,子进程将1.txt内容拷贝到2.txt中,父进程将3.txt内容拷贝到4.txt中。
#include<myhead.h>
int main(int argc, const char *argv[])
{pid_t pid=fork();if(pid>0){int fd1=open("./1.txt",O_RDWR|O_CREAT,0664);int fd2=open("./2.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);if(fd1<0||fd2<0){perror("open");return -1;}int buff[124];while(1){int res=read(fd1,buff,sizeof(buff));if(res==0){break;}write(fd2,buff,res);}perror("1.txt");}else if(pid==0){int fd3=open("./3.txt",O_RDWR|O_CREAT,0664);int fd4=open("./4.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);if(fd3<0||fd4<0){perror("open");return -1;}int buff[124];while(1){int res=read(fd3,buff,sizeof(buff));if(res==0){break;}write(fd4,buff,res);}perror("3.txt");}else{perror("fork");exit(1);}return 0;
}
