




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二实验二 LinuxLinux 进程 线程及编程实验进程 线程及编程实验 一 实验目的一 实验目的 1 通过编写一个完整的守护进程 掌握守护进程编写和调试的方法 2 进一步熟悉如何编写多进程程序 二 实验环境二 实验环境 硬件 PC 机一台 JXARM9 2410 教学实验平台 软件 Windows98 XP 2000 系统 虚拟机环境下的 Linux 系统 三 预备知识三 预备知识 1 fork fork 函数用于从已存在的进程中创建一个新进程 新进程称为子进程 而原进程称为 父进程 使用 fork 函数得到的子进程是父进程的一个复制品 它从父进程处继承了整个 进程的地址空间 包括进程上下文 代码段 进程堆栈 内存信息 打开的文件描述符 信号控制设定 进程优先级 进程组号 当前工作目录 根目录 资源限制和控制终端等 而子进程所独有的只有它的进程号 资源使用和计时器等 2 exit 和 exit 的区别 exit 函数的作用最为简单 直接使进程停止运行 清除其使用的内存空间 并销毁 其在内核中的各种数据结构 exit 函数则在这些基础上作了一些包装 在执行退出之前加了若干道工序 exit 函数在调用 exit 系统调用之前要检查文件的打开情况 把文件缓冲区中的内容写回文 件 就是图中的 清理 I O 缓冲 一项 3 wait 和 waitpid wait 函数是用于使父进程 也就是调用 wait 的进程 阻塞 直到一个子进程结束或 者该进程接到了一个指定的信号为止 如果该父进程没有子进程或者他的子进程已经结束 则 wait 就会立即返回 四 实验内容四 实验内容 在该实验中 读者首先创建一个子进程 1 守护进程 然后在该子进程中新建一个子 进程 2 该子进程 2 暂停 10s 然后自动退出 并由子进程 1 收集子线程退出的消息 在这 里 子进程 1 和子进程 2 的消息都在系统日志文件 例如 var log messages 日志文件 的全路径名因版本的不同可能会有所不同 中输出 在向日志文件写入消息之后 守护进 程 子进程 1 循环暂停 其间隔时间为 10s 五 实验步骤五 实验步骤 1 分析下面的代码 注意它的运行会产生几个进程以及掌握 fork 调用的具体过程 multi proc wrong c include include include include include int main void pid t child1 child2 child 创建两个子进程 child1 fork child2 fork 子进程 1 的出错处理 if child1 1 printf Child1 fork error n exit 1 else if child1 0 在子进程 1 中调用 execlp 函数 printf In child1 execute ls l n if execlp ls ls l NULL 0 printf Child1 execlp error n if child2 1 子进程 2 的出错处理 printf Child2 fork error n exit 1 else if child2 0 在子进程 2 中使其暂停 5s printf In child2 sleep for 5 seconds and then exit n sleep 5 exit 0 else 在父进程中等待两个子进程的退出 printf In father process n child waitpid child1 NULL 0 阻塞式等待 if child child1 printf Get child1 exit code n else printf Error occured n do child waitpid child2 NULL WNOHANG 非阻塞式等待 if child 0 printf The child2 process has not exited n sleep 1 while child 0 if child child2 printf Get child2 exit code n else printf Error occured n return 0 此段代码会是我们所希望的结果 如果 child1 fork child2 fork 都成功则会有 4 个进程 child1 fork 后会才生一个新的进程 主进程 child1 child2 fork 后主进程 和 child1 有分别产生一个新的进程 2 分析下面代码 体会与上一个代码之间的区别 multi proc c include include include include include int main void pid t child1 child2 child 创建两个子进程 child1 fork 子进程 1 的出错处理 if child1 1 printf Child1 fork error n exit 1 else if child1 0 在子进程 1 中调用 execlp 函数 printf In child1 execute ls l n if execlp ls ls l NULL 0 printf Child1 execlp error n else 在父进程中再创建进程 2 然后等待两个子进程的退出 child2 fork if child2 1 子进程 2 的出错处理 printf Child2 fork error n exit 1 else if child2 0 在子进程 2 中使其暂停 5s printf In child2 sleep for 5 seconds and then exit n sleep 5 exit 0 printf In father process n child waitpid child1 NULL 0 阻塞式等待 if child child1 printf Get child1 exit code n else printf Error occured n do child waitpid child2 NULL WNOHANG 非阻塞式等待 if child 0 printf The child2 process has not exited n sleep 1 while child 0 if child child2 printf Get child2 exit code n else printf Error occured n return 0 3 在宿主机上编译调试该程序 gcc multi proc c o multi proc 4 在确保没有编译错误后 使用交叉编译该程序 arm linux gcc multi proc c o multi proc 5 将生成的可执行程序下载到目标板上运行 6 分析实验结果 主要是要理解 FORK 函数的意义 在语句 child1 fork 之前 只有一个进程在执 行这段代码 但在这条语句之后 就变成两个进程在执行了 这两个进程的代码部分完全 相同 两个进程中 原先就存在的那个被称作 父进程 新出现的那个被称作 子进程 父子进程的区别除了进程标志符 process ID 不同外 变量 child1 的值也不相同 child1 存放的是 fork 的返回值 fork 调用的一个奇妙之处就是它仅仅被调用一次 却能够返回两 次 它可能有三种不同的返回值 在父进程中 fork 返回新创建子进程的进程 ID 在子进程中 fork 返回 0 如果出现错误 fork 返回一个负值 所以掌握了 fork 的含义后就不难分析结果了 第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年环保产业技术创新与产业升级技术创新合作模式研究报告
- 2025年电商平台大数据分析在眼镜行业精准营销策略报告
- 2025年核能产业铀矿资源需求预测与市场供应分析报告
- 2025年环保行业环保产业环保教育与培训技术进展与应用研究报告001
- 押题宝典高校教师资格证之《高等教育法规》试题含答案详解(完整版)
- 2025至2030年中国生蚝市场运行态势及行业发展前景预测报告
- 押题宝典高校教师资格证之《高等教育心理学》通关考试题库及答案详解【夺冠系列】
- 推拿治疗学试题库含答案详解(基础题)
- 考点解析-冀教版七年级下册期末试题附答案详解【典型题】
- 2025年度汽车租赁与新车购买双重保障合同
- 应急心理与心理疏导
- JJF 1183-2025 温度变送器校准规范
- 2025年新《公司法》知识竞赛题库(含答案)
- 颜料企业数字化转型与智慧升级战略研究报告
- 农产品加工可行性报告
- 七年级体育 运动损伤的预防和处理说课稿
- 2025年度人工智能辅助医疗合作协议范本模板4篇
- GB/T 15561-2024数字指示轨道衡
- 办公用品供货服务计划方案
- 全国粤教清华版初中信息技术七年级上册第2单元第4节《云服务》说课稿
- 一年级得稳稳地走-一年级家长会【课件】
评论
0/150
提交评论