免费做片头的网站,湖州交通网站集约化建设项目,企业网站尺寸,自己做微信小程序商城1.思维导图 2.使用多进程完成两个文件的拷贝#xff0c;父进程拷贝前一半#xff0c;子进程拷贝后一半#xff0c;父进程回收子进程的资源。
#includemyhead.hint main(int argc, const char *argv[])
{//判断终端输入的参数是否合法if(argc!3){printf(input…1.思维导图 2.使用多进程完成两个文件的拷贝父进程拷贝前一半子进程拷贝后一半父进程回收子进程的资源。
#includemyhead.hint main(int argc, const char *argv[])
{//判断终端输入的参数是否合法if(argc!3){printf(input file error\n);printf(usage:./a,out srcfile destfile\n);return -1;}//定义文件指针以只读的方式打开文件FILE *srcfpNULL;srcfpfopen(argv[1],r);if(srcfpNULL){perror(fopen error);return -1;}//定义文件指针以只写的方式打开FILE *destfpNULL;destfpfopen(argv[2],w);if(destfpNULL){perror(fopen error);return -1;}//将光标定位在文件结束位置fseek(srcfp,0,SEEK_END);//返回值就是文件大小int sizeftell(srcfp);//把光标移动到文件开头fseek(srcfp,0,SEEK_SET);//定义父进程pid_t pid-1;//使用父进程创建一个子进程pidfork();//判断父子进程执行的程序代码if(pid0)//判断是父进程{char buf;//光标移动到文件的一半fseek(srcfp,size/2,SEEK_SET);while(ftell(srcfp)!size)//当文件读写到最后时结束{fread(buf,1,1,srcfp);//读fwrite(buf,1,1,srcfp);//写}//退出进程exit(EXIT_SUCCESS);}else if(pid0)//子进程{//光标移动到文件开头fseek(destfp,0,SEEK_SET);char buf;while(ftell(destfp)size)//读取到文件一半大小就结束{fread(buf,1,1,destfp);//读fwrite(buf,1,1,destfp);//写}//退出进程exit(EXIT_SUCCESS);}if(pid0){//回收进程wait(NULL);wait(NULL);}//关闭文件fclose(srcfp);fclose(destfp);return 0;
}
程序运行前 程序运行后