欢迎来到天天文库
浏览记录
ID:51260389
大小:547.00 KB
页数:12页
时间:2020-03-20
《进程管理操作系统实验归纳总结报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、学年第学期操作系统课程实验报告学院:专业:班级: 姓名: 学号: 任课教师: 实验题目进程管理实验地点实验目的1.加深对进程概念的理解,明确进程和程序的区别。2.进一步认识并发执行的实质。3.学习通过进程执行新的目标程序的方法。实验内容1.如何获得当前进程和父进程的ID号,以及其用户和组的相关信息(pid.c)#include#include#includeintmain(){pid_tmyPid;pid_
2、tmyParentPid;gid_tmyGid;uid_tmyUid;myPid=getpid();myParentPid=getppid();myGid=getgid();myUid=getuid();printf("myprocessidis%d",myPid);printf("myparent'sprocessidis%d",myParentPid);printf("myuseridis%d",myUid);printf("mygroupidis%d",myGid);return0;}2.如何建立新的进程#include#inc
3、ludeintmain(){intfork_rv;printf("before:mypidis%d",getpid());fork_rv=fork();if(fork_rv==-1)perror("errorinfork!");elseif(fork_rv==0)printf("Iamthechild.mypid=%d",getpid());elseprintf("Iamtheparent,mychildis%d",fork_rv);return0;}-10-3.一个程序如何运行另一个程序#include#include<
4、stdlib.h>#include#include#includeintmain(intargc,char*argv[]){//以NULL结尾的字符串数组的指针,适合包含v的exec函数参数char*arg[]={"ls","-a",NULL};/***创建子进程并调用函数execl*execl中希望接收以逗号分隔的参数列表,并以NULL指针为结束标志*/if(fork()==0){//inclildprintf("1------------execl------------");if(execl("/bin
5、/ls","ls","-a",NULL)==-1){perror("execlerror");exit(1);}}sleep(1);/***创建子进程并调用函数execv*execv中希望接收一个以NULL结尾的字符串数组的指针*/if(fork()==0){//inchildprintf("2------------execv------------");if(execv("/bin/ls",arg)<0){perror("execverror");exit(1);}}sleep(1);/***创建子进程并调用execlp*execlp中-10-*l希望接收以逗号
6、分隔的参数列表,列表以NULL指针作为结束标志*p是函数可以到的PATH变量查找子程序文件*/if(fork()==0){//inclhildprintf("3------------execlp------------");if(execlp("ls","ls","-a",NULL)<0){perror("execlperror");exit(1);}}sleep(1);/***创建子里程并调用execvp*v望接收到一个以NULL结尾的字符串数组的指针*p是函数可以到PATH变量查找子程序文件*/if(fork()==0){printf("4----------
7、--execvp------------");if(execvp("ls",arg)<0){perror("execvperror");exit(1);}}sleep(1);/***创建子进程并调用execle*l希望接收以逗号分隔的参数列表,列表以NULL指针作为结束标志*e函数传递指定参数envp,允许改变子进程的环境,为传递给执行文件的新环境变量数组的指针,无后缀e时,子进程使用当前程序的环境,它是最后一个参数*/if(fork()==0){printf("5------------execle------------");
此文档下载收益归作者所有