操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx

上传人:王** 文档编号:724453 上传时间:2023-12-27 格式:DOCX 页数:17 大小:106.77KB
下载 相关 举报
操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx_第1页
第1页 / 共17页
操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx_第2页
第2页 / 共17页
操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx_第3页
第3页 / 共17页
操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx_第4页
第4页 / 共17页
操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx_第5页
第5页 / 共17页
操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx_第6页
第6页 / 共17页
操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx_第7页
第7页 / 共17页
操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx_第8页
第8页 / 共17页
操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx_第9页
第9页 / 共17页
操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx_第10页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告--实验三 一个进程启动另一个程序的执行.docx(17页珍藏版)》请在优知文库上搜索。

1、操作系统实验报告专业:物联网工程实验三一个进程启动另一个程序的执行【实验目的】在Linux环境系统中,execve系统调用用于执行一个程序(可执行二进制文件或脚本)。exec函数家族,包括execRexeclpexecleexecvexecvp,是execve系统调用的前端。本实验要求学生学习在一个进程中启动另一个程序执行的基本方法,了解execve系统调用和exec函数家族的使用方法。【实验内容】(一)初步认识“在一个进程中启动另一个程序的执行:1编辑一个源程序dummy.c,并编译为可执行程序dummy。/dummy.c#include#include#include#includeint

2、main(intargc,char*argv)(intresult;printf(nYouarenowinarunningprogram%s.n,argv0);printf(,MyPIDis%d.MyparentsPIDis%d.n,getpid(),getppid();printf(nPleaseinputaninteger(0-255),whichwillbereturnedtomyparentprocessn);scanf(%dn,&result);printf(,Goodbye.nnu);return(result&0377);)2、再编辑一个源程序exec_test.c,并编译为可执

3、行程序exec_testo/exec_test.c#include#include#include#include#include#includeintmain(intargc,char*argv)(intresult;result=fork();if(result0)(perror(Failedtocreatechild*);exit(l);)elseif(result=0)/Child1char*cmd=./dummy;printf(Chidprocess,sPIDis%d.MyparentsPIDis%d.n,getpid(),getppid();printf(,Childprocess

4、isabouttoexecute%s,nn,cmd);result=execlp(cmd,cmd,NULL);if(result=-1)(perror(Inchildprocess,failedtoexecaprogram*);)exit(0);)else(/parentintstatus;printf(nParentprocesssPIDis%d.n,getpid();printf(nParentprocessiswaiting.n);wait(&status);printf(nInparentprocess,status=0x%x,WEXITSTATUS(status)=%d(i.e.0x

5、%x)nu,status,WExiTSTATUS(Status),WEXITSTATUS(status);)return(EXIT.SUCCESS);)3、先执行dummy,观察、分析执行结果;然后执行程序exec_test,观察、分析执行结果。(注意,两个可执行程序都在当前目录下)(二)实现一个简单的命令解释外壳(Shell)o1基本功能:(1)从标准输入读取一行字符串,其中包含欲执行的命令和它的命令行参数(如果有的话)。提示:需要将输入的一行字符串进行拆分,以空格、制表符(t)作为分隔符,分解为命令、命令行参数(零个或多个)。如果用户输入的命令是“quit”,则退出执行。(2)创建一个子进

6、程。(3)在子进程中,执行在(1)读入的命令,如果有命令行参数,也要传递。(4)在父进程中,等待子进程结束,然后打印子进程的返回值。(5)在父进程中,控制转移至(I)o【实验要求】按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。【实验设计】dummy程序:HIiyuxin221liyuxin221test3$./dummyHyouarenowinarunningprogram./dummy. MyPIDis14758.MyparentsPIDis14449.HPleaseinputaninteger(-255),whichwillbereturned

7、tomyparentprocess.233 Goodbye.I,lyg11221QlIyUXln221test33结果显示了该进程的PID和父进程的PID,并且将一个值返回给了父进程。exec_testSJ?5:Inparentprocess,status=2a0,WEXITSTATUS(status)=42(i.e.x2a)Iiyuxin221liyuxin221test3S./exectest.outParentprocesssPIDis14769.ParentprocessiswaitingChildprocesssPIDis1477.MyparentsPIDis14769.Childp

8、rocessisabouttoexecute./dummyYouarenowinarunningprogram./dummy.MyPIDis14770.MyparentsPIDis14769.Pleaseinputaninteger(-255),whichwillbereturnedtomyparentprocess:19Goodbye.Inparentprocess,status=0x13,WEXITSTATUS(status)=19(i.e.13)Iiyuxin221(aiiyuxin221test3S在子进程中键入的数值返回了父进程,并显示了出来(19).实现一个简单的命令解释外壳(Sh

9、ell)源代码:/example#include#include#include#include#include#include#includeintmain()intpid;intrtn;子进程的返回值intexec_errorno;charcommand256;char*p;char*q;char*c20;inti=0,j=0;while(l)/从终端读取要执行的命令printf();command0=,0,;p=fgets(command,256,stdin);if(p=NULL)perror(Errorinfgets().n);exit(-l);)/Deletethelastchar(

10、newline)inthestringreturnedbyfgets()Commandfstrlen(Command)-1=,0,;p=command;q=p;/Quitifuserinputsquitif(!strcmp(command,quit,)break;)/Createachildprocesstoexecutecommandpid=fork();if(pidO)perror(HFailedwhilecallingfork.*);exit(-l);1elseif(pid=0)子进程执行此命令for(;)ci=strtok(p,M,);if(ci=NULL)break;1i+;p=NU

11、LL;)p=c0;for(j=0;jquitIiyuxin221liyuxi221 test3 fial2.outls -alIs -al 总用量152 dxrwxr-x dnxnxr-x -xrwxr-x -rwxrwxr-x -rwxn-n- -rwxrwxr-x -nxn-rw- rwxrwxr-x -xn-n- -nxrfxr-x -nxn-n- -rwxnxr-x -nxn-n- -rwxrwxr-x -rwxn-rv- rwxrwxr-x -rwxr-xr-x -nxrwxr-x -xnn -rwxrw-n- -rwxnxr-x -rwxn-n- -nxrw-rw-2 51 111

12、1111 11111111 11111Uyuxin221 liyuxin221 liyuxi221 liyui221 liyin221 Uyuxin221 liyuxin221 Uyuxin221 liyuxin221 liyuxi221 liyuxin221 liyui221 liyin221 Xiyuxin221 Uyuxin221 Uyuxin221 liyuxin221 liyuxin221 liyuxi221 liyin221 liyuin221 liyuxin221 liyuin221liyuxin221 liyuxin221 liyuxi221 liyuxin221 liyuxin221 liyuxin221 Uyuxin221 liyuxin221 liyuxin221 liyuxin221 liyuxi221 liyuxin221 liyuxin221 liyuxin221 Uyuxin221 liyuxin221 liyuxin221 liyuxin2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > Web服务

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!