当前位置: 首页 > news >正文

IO--进程实操

1.创建一个进程扇

#include <051head.h>
int main(int argc, const char *argv[])
{pid_t pid;for(int i=0;i<4;i++){pid=fork();if(pid==-1) //父进程{ERRLOG("fork error..\n");}   else if(pid==0)  //这是子进程{                                                   printf("pid=%d  ppid=%d\n",getpid(),getppid());break;}//父进程//不用写代码,默认执行循环,继续进行fork}while(1);    //子进程while(waitpid(-1,NULL,WNOHANG)<=0); // 子进程结束,再回收return 0;
}   

2.创建一个进程链

#include <25051head.h>
int main(int argc, const char *argv[])
{pid_t pid;for(int i=1;i<5;i++){pid=fork();if(pid==-1)  //这是子进程{ERRLOG("fork error\n");     }else if(pid>0) //父进程 {wait(NULL);     //阻塞   接受子进程资源  exit(0);                                            }//子进程//不用写,默认执行循环,继续forkprintf("pid=%d  ppid=%d\n",getpid(),getppid());}while(1);return 0;
}

3.请问打印的结果是什么


输出结果:

info1 from child process_2
info1 from child process_1
info1 from parent process
info2 from parent process

4.实现文件的拷贝,父进程拷贝前一部分,子进程拷贝后一部分

#include <25051head.h>
int main(int argc, const char *argv[])
{FILE* fp=fopen("my.txt","r");if(NULL==fp){ERRLOG("fopen error..\n");}fseek(fp,0,SEEK_END);int num=ftell(fp);int n=(num-1)/2;FILE* fd=fopen("my1.txt","w+");if(NULL==fd){ERRLOG("fopen error..\n");                              }char buf[128]="";pid_t pid=fork();if(0>pid){ERRLOG("fork error");}else if(0<pid){wait(NULL);   // 等待子进程完成fseek(fp,0,SEEK_SET);fseek(fd,0,SEEK_SET);while(n>0){size_t res=fread(buf,1,(n<sizeof(buf))? n:sizeof(buf),fp);if(res<=0){break;}fwrite(buf,1,n,fd);n-=res;}}else{fseek(fp,n,SEEK_SET);fseek(fd,0,SEEK_SET);while(n>0){size_t res=fread(buf,1,(n<sizeof(buf))? n:sizeof(buf),fp);if(res<=0){break;}fwrite(buf,1,n,fd);n-=res;exit(0);}}fclose(fp);fclose(fd);return 0;
}

打印结果:

思维导图

http://www.lryc.cn/news/579041.html

相关文章:

  • 【新手小白的嵌入式学习之路】-STM32的学习_GPIO 8种模式学习心得
  • ai之RAG本地知识库--基于OCR和文本解析器的新一代RAG引擎:RAGFlow 认识和源码剖析
  • LeetCode--39.组合总和
  • Lua 安装使用教程
  • CRMEB Pro版v3.3源码全开源+PC端+Uniapp前端+搭建教程
  • 【C++】第十三节—stack、queue、priority_queue、容器适配器(介绍和使用+模拟实现+OJ题)
  • 客服机器人知识库怎么搭?智能客服机器人3种方案深度对比(含零售落地案例)
  • 去中心化身份:2025年Web3身份验证系统开发实践
  • 专题:2025AI营销市场发展研究报告|附400+份报告PDF汇总下载
  • 告别 ifconfig:openEuler 网络配置的现代化之路
  • 通俗理解JVM细节-面试篇
  • UI前端大数据处理策略优化:基于云计算的数据存储与计算
  • kotlin 通道trysend方法
  • ZYNQ学习记录FPGA(六)程序固化Vivado+Vitis
  • GO Web 框架 Gin 完全解析与实践
  • 【Unity】MiniGame编辑器小游戏(九)打砖块【Breakout】
  • 云上配送革命:亚矩云手机如何重塑Uber Eats的全球外卖生态
  • 服务器异常宕机或重启导致 RabbitMQ 启动失败问题分析与解决方案
  • 2025年Java常见面试题(持续更新)
  • Maven工具学习使用(十三)——Maven Wrapper命令解析与使用
  • 在设计提示词(Prompt)时,关于信息位置的安排z怎么 结合模型特性和任务目标
  • 量子算法:微算法科技用于定位未知哈希图的量子算法,网络安全中的哈希映射突破
  • Linux 后台启动java jar 程序 nohup java -jar
  • pytest之fixture中yield详解
  • 文心快码答用户问|Comate AI IDE专场
  • UniApp完美对接RuoYi框架开发企业级应用
  • Droplets:趣味AI课程,开启语言学习新旅程
  • 【趣谈】Android多用户导致的UserID、UID、shareUserId、UserHandle术语混乱讨论
  • AJAX 安装使用教程
  • 从零用java实现 小红书 springboot vue uniapp (12)实现分类筛选与视频笔记功能