广州十大网站建设,孝感网站制作,做淘宝客网站要申请什么,佛山网络营销推广一、思维导图 二、练习
1、使用父子进程完成两个文件的拷贝#xff0c;父进程拷贝前一半内容#xff0c;子进程拷贝后一半内容#xff0c;子进程结束后退出#xff0c;父进程回收子进程的资源
#includemyhead.h
int main(int argc, const char *argv[])
{//判断终…一、思维导图 二、练习
1、使用父子进程完成两个文件的拷贝父进程拷贝前一半内容子进程拷贝后一半内容子进程结束后退出父进程回收子进程的资源
#includemyhead.h
int main(int argc, const char *argv[])
{//判断终端输入if(argc ! 3){printf(input error!\n);printf(usage:./a.out srcfilename destfilename\n);return -1;}//以只读的形式打开源文件只写的形式打开目标文件int srcfd -1;int destfd -1;if((srcfd open(argv[1],O_RDONLY)) -1){perror(open src error);return -1;}if((destfd open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0664)) -1){perror(open dest error);return -1;}//拷贝//创建子进程pid_t pid -1;pid fork();//定义拷贝容器char buf[128];//父进程拷贝一半if(pid 0){//循环将源文件数据加载到buf中while(1) {printf(父进程拷贝\n);int res read(srcfd,buf,sizeof(buf));if(res 0){break;}//将读入buf中的数据写入目标文件write(destfd,buf,res);}}//子进程拷贝一半if(pid 0){//循环将源文件数据加载到buf中while(1) {printf(子进程拷贝\n);int res read(srcfd,buf,sizeof(buf));if(res 0){break;}//将读入buf中的数据写入目标文件write(destfd,buf,res);}//退出子进程exit(EXIT_SUCCESS);}//父进程阻塞为子进程收尸wait(NULL);printf(父进程为子进程收尸成功\n);//关闭文件描述符close(srcfd);close(destfd);printf(拷贝成功\n);return 0;
}