第2次小课.创建进程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实用操作系统 华软软件学院软件工程系 P* 第二次小课 创建进程 华软软件工程系 创建进程实验课主要内容 本周大课内容回顾 通过实验理解Linux中用户进程的创建与调度执行 通过实验理解Linux中父子进程的概念和关系,以及父子进程映像的管理。 主要内容 第一部分 本周大课 内容回顾 第2章 程序与进程 进程的概念 创建进程 主要内容 大课回顾(1) 并发程序的概念? 进程的概念?进程与程序的区别? 进程映像的组成? 进程有哪3种基本状态?三种状态如何转变? 进程创建相关函数 进程的创建 创建进程的系统调用函数有3个:fork(最基本的)、clone、vfork。 这3个系统调用函数都是通过统一的系统调用接口进入核心态运行后,各自调用自己的内核函数sys_fork, sys_clone, sys_vfork进行处理。最终都是通过调用do_fork()函数来进行创建子进程的工作,只不过参数不同。 进程创建相关函数 fork()的返回值说明: ==0;子进程返回 0;父进程返回 -1;出错 fork调用执行2次返回(这样的函数在Linux中只有少数几个),它将从父进程和子进程中分别返回。 父进程返回时的返回值为子进程的PID,而从子进程返回时的返回值为0。 2次返回都将执行fork之后的语句。 一般程序架构 main() { int pid; //子进程的标识符PID while ( (pid=fork()) == -1) ;//子进程创建成功为止 if (pid == 0) //子进程返回 { // 插入子进程返回时处理的程序段 } else // 父进程返回 { // 插入父进程返回时处理的程序段 } } 第二部分 进程创建 实验 第2章 进程 进程的概念 进程创建 主要内容 实验前准备 建立目录:进入Linux系统后,打开主文件夹(home),在该文件夹下创建对应周的文件夹,如1、2等,方便管理 创建源文件方法1 通过右键在“2”目录下创建名为”.c”的源文件,双击打开后可编辑 创建源文件方法2 在搜索中输入terminal来查找终端(英文名为terminal),打开终端后输入gedit按回车后进入文件编辑器,编辑后保存到目标文件夹。 打开1.c后,输入源程序,如 #includestdio.h main() { printf(Hello world!!\n); } 实验前准备 在终端通过CD命令进入相应文件夹 编译源文件 gcc -o 1 1.c 将1.c源文件编译成可执行文件,文件名为1,-o为编译参数,意思为输出为可执行文件 执行文件 ./1 结果会在终端中显示 编译过程 命令说明 CD 切换路径 LS 显示当前文件夹目录 PWD 显示当前路径 GCC 编译命令 更多终端命令和GCC命令请查看另外提供的文档 实验1 利用fork创建进程 文件名2-1.c:父进程创建子进程P1,父进程输出’a’,子进程输出’b’。 要求 理解fork函数的用法以及返回值情况 多次运行查看结果,说明可能的结果有哪些?并解释原因。 #includestdio.h main(){ int p1; while((p1=fork())==-1); if(p1==0) putchar(b); else putchar(a); } 实验2 利用vfork创建进程 文件名2-2.c:定义一个全局整型变量g_var=0,再定义一个局部变量var=10,父进程分别使用fork和vfork创建子进程p1,在子进程中分别修改g_var和var,并输出两个变量的值;父进程输出两个变量的值。 要求 理解vfork函数的用法以及返回值情况 查看结果?并解释原因。 理解并说明fork与vfork的区别 使用fork创建子进程p1 #includestdio.h int g_var=0; main(){ int var=10; int p1; while((p1=fork())==-1); if(p1==0){ g_var=1; var=5; printf(g_var=%d,var=%d\n,g_var,var);} else printf(g_var=%d,var=%d\n,g_var,var); } 使用fork创建子进程p1 #includestdio.h #includeunistd.h int g_var=0; main(){ int var=10; int p1; while((p1=vfork())==-1); if(p1==0){ g_var=1; var=5; printf(g

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档