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

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

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

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

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

3、行程序exec_testo/exec_test.c#inc1ude#inc1ude#inc1ude#inc1ude#inc1ude#inc1udeintmain(intargc,char*argv)(intresu1t;resu1t=fork();if(resu1t0)(perror(Fai1edtocreatechi1d*);exit(1);)e1seif(resu1t=0)/Chi1d1char*cmd=./dummy;printf(Chidprocess,sPIDis%d.MyparentsPIDis%d.n,getpid(),getppid();printf(,Chi1dprocess

4、isabouttoexecute%s,nn,cmd);resu1t=exec1p(cmd,cmd,NU11);if(resu1t=-1)(perror(Inchi1dprocess,fai1edtoexecaprogram*);)exit(0);)e1se(/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,观察、分析执行结果。(注意,两个可执行程序都在当前目录下)(二)实现一个简单的命令解释外壳(She11)o1基本功能:(1)从标准输入读取一行字符串,其中包含欲执行的命令和它的命令行参数(如果有的话)。提示:需要将输入的一行字符串进行拆分,以空格、制表符(t)作为分隔符,分解为命令、命令行参数(零个或多个)。如果用户输入的命令是“quit”,则退出执行。(2)创建一个子进

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

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

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

9、1)源代码:/examp1e#inc1ude#inc1ude#inc1ude#inc1ude#inc1ude#inc1ude#inc1udeintmain()intpid;intrtn;子进程的返回值intexec_errorno;charcommand256;char*p;char*q;char*c20;inti=0,j=0;whi1e(1)/从终端读取要执行的命令printf();command0=,0,;p=fgets(command,256,stdin);if(p=NU11)perror(Errorinfgets().n);exit(-1);)/De1etethe1astchar(ne

10、w1ine)inthestringreturnedbyfgets()Commandfstr1en(Command)-1=,0,;p=command;q=p;/Quitifuserinputsquitif(!strcmp(command,quit,)break;)/Createachi1dprocesstoexecutecommandpid=fork();if(pidO)perror(HFai1edwhi1eca11ingfork.*);exit(-1);1e1seif(pid=0)子进程执行此命令for(;)ci=strtok(p,M,);if(ci=NU11)break;1i+;p=NU11

11、;)p=c0;for(j=0;jquitIiyuxin2211iyuxi221test3fia12.out1s-a1Is-a1总用量152dxrwxr-xdnxnxr-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-25111111111111111111111Uyuxin2211iyuxin2211i

12、yuxi2211iyui2211iyin221Uyuxin2211iyuxin221Uyuxin2211iyuxin2211iyuxi2211iyuxin2211iyui2211iyin221Xiyuxin221Uyuxin221Uyuxin2211iyuxin2211iyuxin2211iyuxi2211iyin2211iyuin2211iyuxin2211iyuin2211iyuxin2211iyuxin2211iyuxi2211iyuxin2211iyuxin2211iyuxin221Uyuxin2211iyuxin2211iyuxin2211iyuxin2211iyuxi2211iyuxin2211iyuxin2211iyuxin221Uyuxin2211iyuxin2211iyuxin2211iyuxin2211iyuxi2211iyuxin2211iyuxi221Uyuxin221Uyuxin22149649653645364

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

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

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



客服