- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统上实验报告3
操作系统实验三报告 实验题目: 进程管理及进程通信 实验环境: 虚拟机Linux操作系统 实验目的: 1.利用Linux提供的系统调用设计程序,加深对进程概念的理解。 2.体会系统进程调度的方法和效果。 3.了解进程之间的通信方式以及各种通信方式的使用。 实验内容: 例程1: 利用fork()创建子进程 #includestdio.h #includestdlib.h #includeunistd.h main() { int i; if (fork()) i=wait(0); /*父进程执行的程序段*/ /* 等待子进程结束*/ printf(It is parent process.\n); printf(The child process,ID number %d, is finished.\n,i); } else{ printf(It is child process.\n); sleep(10); /*子进程执行的程序段*/ exit(1); /*向父进程发出结束信号*/ } } 运行结果: 思考:子进程是如何产生的? 又是如何结束的?子进程被创建后它的运行环境是怎 样建立的? 答:子进程是通过函数fork()创建的,通过exit()函数自我结束的,子进程被创建后核心将为其分配一个进程表项和进程标识符,检查同时运行的进程数目,并且拷贝进程表项的数据,由子进程继承父进程的所有文件。 例程2: 循环调用fork()创建多个子进程 #includestdio.h #includestdlib.h #includeunistd.h main() { int i,j; printf(“My pid is %d, my father’s pid is %d\n”,getpid() ,getppid()); for(i=0; i3; i++) if(fork()==0) printf(“%d pid=%d ppid=%d\n”, i,getpid(),getppid()); else { j=wait(0); Printf(“ %d:The chile %d is finished.\n” ,getpid(),j); } } 运行结果: 思考:画出进程的家族树。子进程的运行环境是怎样建立的?反复运行此程序 看会有什么情况?解释一下。 答: 子进程的运行环境是由将其创建的父进程而建立的,反复运行程序会发现每个进程标识号在不断改变,这是因为同一时间有许多进程在被创建。 例程3: 创建子进程并用execlp()系统调用执行程序的实验 #includestdio.h #includeunistd.h main() { int child_pid1,child_pid2,child_pid3; int pid,status; setbuf(stdout,NULL); child_pid1=fork(); /*创建子进程1*/ if(child_pid1==0) { execlp(echo,echo,child process 1,(char *)0); /*子进程1 启动其它程序*/ perror(exec1 error.\n ); exit(1); } child_pid2=fork(); /*创建子进程2*/ if(child_pid2==0) { execlp(date,date,(char *)0); /*子进程2 启动其它程序*/ perror(exec2 error.\n ); exit(2); } child_pid3=fork(); /*创建子进程3*/ if(child_pid3==0) { execlp(ls,ls,(char *)0); /*子进程3 启动其它程序*/ perror(exec3 error.\n ); exit(3); } puts(Parent process is waiting for chile process return!); while((pid=wait(status))!=-1) /*等待子进程结束*/ { if(child_pid1==pid) /*若子进程1 结束*/ printf(child process 1 terminated with status %d\n,(status8)); else {if(child_pid2==pid) /*若子进程2 结束*/ printf(child process 2 terminated with status %d\n,(status8)); else { if(child_pid3==pid) /*若子进程3 结束*/ printf(chi
您可能关注的文档
- 招34 2014-2015年度协议供货第一批.doc
- 招商王总裁收现策略研讨会(龚震波)中华讲师网.ppt
- 招标法讲课08年(student).ppt
- 招聘与配置COPY.ppt
- 招行内部激励遇挫 员工持股计划冲关未果.pptx
- 招聘面试题集.ppt
- 拖延症_英文版_procrastination.ppt
- 拒绝浮躁_踏实做人.ppt
- 拥有积极幸福的幼教人生.ppt
- 招行少儿财商活动.ppt
- 设备安全管理新规制度.doc
- 2026年高考政治压轴训练3.docx
- 2026年高考时政热点专题《神州二十一号》.pptx
- 2026年高考语文专题复习:古诗词阅读 课件.pptx
- 专题25 介词(知识清单)(解析版)-2026年高考英语一轮复习知识清单.pptx
- 2026年高考语文复习 《信息类文本阅读 观点的评价和运用》 课件.pptx
- 2026年高考语文复习 《古代诗歌的形象》 课件.pptx
- 2026年高考语文复习 《古代诗歌的语言》 课件.pptx
- 热点 01 人工智能【讲练结合】(解析版)-2026年中考英语新课标(核心素养)书面表达专题讲练(全国通用).docx
- 2026年高考语文专题复习:古诗词表达技巧 课件.pptx
有哪些信誉好的足球投注网站
文档评论(0)