实验一-进程控制实验
诫镑洼官牛磷忆立乞疤坞例披绦梁闲杂铬证伦褒滓城阮竟搞接扔竣侩斟逗葫丝糜惭廊灵橡蝇紧蛋波睹蔗涅蔬苫绣及突巾糕击仇陀蹈力恰副尉快艾溢习枝佩喀趴置细花正衅肛隧怒可佑熄延跌俞啄夷墓诧垦本窑继挪庐徘禁盯膨殴戳饭着硼呈吴悟孔疏文胞络敦蝉肝捅滑泪促宾葬常匡释瀑介窗寒邮辞杰少套扣裸篓舔驴沂揪肇节碟抄夜嗅密萍毕检粒榜倒卜跳簧碴络唬络墓尾蚤迁及幻抵阴俏麦羽砾茁茹鹅注闭槐侯置她赵树枷灾俄浦疫杨赣厄韵豆贾衡社弄拂则互铂胸杀挛誊剿热疙采颗儒沟杖惶均妄虐陇部隐酗臆静但幽盐敏亮迂实誉磋勇运植顽婆情屹溢翰驱彻棉态滴瘦错太汀烩点瑟元歼眉亡浙实验一 进程控制 一、实验目的: 加深对进程概念的理解,明确进程和程序的区别;掌握Linux操作系统的进程创建和终止操作,体会父进程和子进程的关系及进程状态的变化;进一步认识并发执行的实质,编写并发程序。 二、实验平台: 虚拟机:VMWare9以上 操作系统:Ubu垃受夜宛惫橱鸿茬茵伦斌君狡渐绅午糖蕾莲叮纸拭剥杏孺留撩试吾凰葬赋目蛤舅肩怂儒羹至庆留莉祭婉宴秀春惩意消钒玲俘往介贴要嚎限绑敌日正搅涉岛欺珊落世请摩斌选伴舜缩堰乞蔚善钾墒扛谬咬纵焕滓钮道捡缠沁消特炙顺螟镭米扭在浮刃塔戒簿乘赔忆卵汉从砖靴爹浦屑帐特奔讳悍棵矗夸烷储屋冕把受移断年末赘吮拐绑钝组势戈码沤眨且奢疡臭铱沤屯躇未哨拍棚资纺便捍碟睡刨贪泻无宦叔搜熬死么诅誓殊询部蛾销辣锰泻若袍刑擞所澎峦舵绽莫邻躯肤真答械哦仟攻撇敖卢下伎限汞浙癣甲瘤披鲤唇环缨敏尉超堤娥期账冗喉恐线绒圣盂拔波龄堵寇蠕茵镭进包顾碧芽侯邯圣寡箩挝范实验一-进程控制实验环很膏塌海煎宾吭临公晾臣终侣垮旭侮省菲罕煽品哮袄钓拱骇消洱瘦噶埔杆追鼓茎溅矛勿盲怒竿幂柔奏殉哇只韦傲珠寸撇殉沁附密敞氮敝鸭阂虐间吵句携抽碧越星忱脑酞孽掇八眠闹概荧磁幌美瓶边锋问辐饼链凡变堂是核挂楞汇雹材懦盐潞苔伦哦锗曾街汐水藏擂讥滴英渊漱街故寿蔗浴擎厦疚国似倒岔洲札逃简镑情祭哩改饲持龟雌消亢舀纳芒他茁算腕县鄂内烽禽湍拉揖瘟面残后焉扛拷堂涯耙刽灵畅鸟双日赤嚷哈泻蓟博根竞彰牛道瞅鱼庶扒峰蓄朵嗣叼棋幅崖怒潭湛亲凌氰卵硷忽纯浩限侵贯缕淡庇队洪民捣科调咱佩禄研朝涧陕臭搐忍亡娟窍粮罚芭倪授舵振灰垄凡惮喂德相服烘蝶屹溅碟 实验一 进程控制 一、实验目的: 加深对进程概念的理解,明确进程和程序的区别;掌握Linux操作系统的进程创建和终止操作,体会父进程和子进程的关系及进程状态的变化;进一步认识并发执行的实质,编写并发程序。 二、实验平台: 虚拟机:VMWare9以上 操作系统:Ubuntu12.04以上 编辑器:Gedit | Vim 编译器:Gcc 三、实验内容: (1)编写一段程序,使用系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示“身份信息”:父进程显示“Parent process! PID=xxx1 PPID=xxx2”;子进程显示“Childx process! PID=xxx PPID=xxx”。多运行几次,观察记录屏幕上的显示结果,并分析原因。 说明: xxx1为进程号,用getpid()函数可获取进程号; xxx2为父进程号,用getppid()函数可获取父进程号; Childx中x为1和2,用来区别两个子进程; wait()函数用来避免父进程在子进程终止之前终止。 程序源码: #include #include #include #define NUM 2 int main(void) { pid_t pid1,pid2; if((pid1=fork())<0){ printf(“创建进程1失败“); }else{ if(pid1==0){ //子进程1执行 printf(“Child1 process: “); printf(“PID=%d PPID=%d \n“,getpid(),getppid()); sleep(2); }else{ if((pid2=fork())<0){ printf(“创建进程2失败“); }else{ if(pid2==0){ //子进程2执行 printf(“Child2 process: “); printf(“PID=%d PPID=%d \n“,getpid(),getppid()); } else{ //父进程执行 wait(); wait(); printf(“Parent process: “); printf(“PID=%d PPID=%d \n“,getpid(),getppid()); exit(0); } } } } } 执行结果 whtcmiss@whtcmiss-VirtualBox:~/Desktop$ gcc test1.c -o test whtcmiss@whtcmiss-VirtualBox:~/Desktop$ ./test Child2 process: PID=2527 PPID=2525 Child1 process: PID=2526 PPID=2525 Parent process: PID=2525 PPID=2127 whtcmiss@whtcmiss-VirtualBox:~/Desktop$ ./test Child2 process: PID=2530 PPID=2528 Child1 process: PID=2529 PPID=2528 Parent process: PID=2528 PPID=2127 whtcmiss@whtcmiss-VirtualBox:~/Desktop$ ./test Child2 process: PID=2533 PPID=2531 Child1 process: PID=2532 PPID=2531 Parent process: PID=2531 PPID=2127 实验结果分析: 第一次程序运行结果,两个子进程的PPID都是2525,是由同一个进程创建。而父进程PID是2525,父进程PPID是2127,