实验二linux进程的创建

实验二linux进程的创建

ID:46327812

大小:345.00 KB

页数:11页

时间:2019-11-22

实验二linux进程的创建_第1页
实验二linux进程的创建_第2页
实验二linux进程的创建_第3页
实验二linux进程的创建_第4页
实验二linux进程的创建_第5页
资源描述:

《实验二linux进程的创建》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验二linux进程的创建一、实验目的1、了解进程与程序的区别,加深对进程概念的理解。2、掌握进程并发执行的原理,理解进程并发执行的特点,区分进程并发执行与串行执行。3、了解fork()系统调用的返回值,掌握用fork()创建进程的方法。4、熟悉wait,exit等系统调用。二、实验内容1、编写一C语言程序,实现在程序运行时通过系统调用fork()创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“parent”,儿子进程执行时显示”son”,女儿进程执行时显示”daughter“。2、多次连续反复运行这个程序,观察屏幕显示结果的顺序,直至出现不一

2、样的情况为止。记下这种情况,试简单分析其原因。3、修改程序,在父、子进程中分别使用wait,exit等系统调实现其同步推进,多次反复运行改进后的程序,观察并记录运行结果。三、实验指导1、fork()系统调用创建一个新进程。系统调用格式:pid=fork()参数定义:intfork()fork()返回值意义如下:0:在子进程中,pid变量保存的fork()返回值为0,表示当前进程是子进程。>0:在父进程中,pid变量保存的fork()返回值为子进程的pid值。-1:创建失败。关于建立进程的典型代码段if(pid=fork())!=0{/*父进程运行,例如wait

3、(pid);*/….}else{/*子进程运行,例如exec(“ap1”,…);*/….}2、wait()系统调用等待子进程运行结束。如果子进程没有完成,父进程一直等待。Wait()将调用进程挂起,直到其子进程因暂停或终止而发来软中断信号为止。系统调用格式:intwait(status)参数定义:int*status;其中,status是用户空间的地址,为0表示子进程正常结束,非0表示出现了各种各样的问题。3、exit()系统调用终止进程的执行。系统调用格式:voidexit(status)参数定义:intstatus;其中,Status是返回给父进程的一个整

4、数。exit(0)表示进程正常终止,exit(1)表示进程运行有错,异常终止。4.exec系统调用:输入参数:新程序名,...功能:以指定程序覆盖当前进程的程序代码典型地,子进程在FORK后用EXEC使新程序覆盖进程空间fork内部实现过程中父子进程内存空间内容和proc等数据结构内容5、参考程序#includemain(){intp1,p2,i;While((p1=fork())==-1);/*创建子进程p1*/if(p1==0)for(i=0;i<4;i++)printf(“daughter%d”,i);else{while(p2=f

5、ork()==-1);/*创建子进程p2*/if(p2==0)for(i=0;i<4;i++)printf(“son%d”,i);elsefor(i=0;i<4;i++)printf(“parent%d”,i);}}#includemain(){intpid;Pid=fork();/*创建子进程*/Switch(pid){case-1:/*创建失败*/printf(“forkfailed!”,);exit(1);case0:printf(“subprocess!”);/*子进程*/Exit(0);Default:/*父进程*/

6、wait(0);/*同步*//*若没有此句,同学们试试有什么不同,为什么?*/printf(“completed!”);Exit(0);}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。