实验5:进程管理及操作

实验5:进程管理及操作

ID:46504642

大小:60.00 KB

页数:9页

时间:2019-11-24

实验5:进程管理及操作_第1页
实验5:进程管理及操作_第2页
实验5:进程管理及操作_第3页
实验5:进程管理及操作_第4页
实验5:进程管理及操作_第5页
资源描述:

《实验5:进程管理及操作》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验5进程管理及操作实验目的1.了解进程号,进程组号,会话号。2.清楚进程两个牛成子进程两数Z间的差别实验内容a)修改程序getpgid_example.c,使结果没有父进程为1的情况。并说明原因b)有3个进程,其中一个为父进程,其余为父进程的子进程,分别打印这三个进程的进程号,父进程号,进程组号。c)有3个进程,其中一个为父进程,其余为父进程的子进程,其中一个子进程运行“Is・1“指令,另一个子进程在暂停5s后界常退出,父进程不阻塞自己,并等待子进程的退出信息,待收到该信息,父进程返回。d)请修改提供的源码,实现

2、简单的myshell,实验结果实验总结#inelude#inelude#inelude#ineludevstring.h>#inelude#ineludevdirent.h>#definenormal0广一般的命令*/#defineout_redirect1/*输出重定向*7#definein」edirect2/*输入重定向*/#definehave_pipe3/*命令屮有管道*/voidprint_prompt();/*打印提示符

3、*/voidget」nput(char*);厂得到输入的命令*7voidexplain_input(char*,int*,chara[100][256]);/*对输入命令进行解析*/voiddo_cmd(int,chara[100][256]);/*执行命令*/intfind_command(char*);厂查找命令屮的可执行程序Tintmain(intargc,char**argv){inti;intargcount=0;chararglist[100][256];char**arg=NULL;char*but=

4、NULL;but=(char*)malloc(256);if(buf==NULL){perror("mallocfailed");exit(-1);}while(1){厂将buf所指向的空间清零*/memset(buf,0,256);print_prompt();get_input(buf);广若输入的命令为exit或logout则退出本程序*/if(strcmp(buf,"exit")==011strcmp(buf,"logout")==0)break;for(i=0;i<100;i++){arglist

5、[i][O]=,,;argcoimt=0;explain_input(buf5&argcount,arglist);do_cmd(argcount,arglist);}广将buf所指向的内存释放*/if(but!=NULL){free(buf);but=NULL;}exit(O);}voidprint_prompt(){printf(”myshell$$”);}厂获取用户输入*/voidget_input(char*but)intlen二0;intch;ch=getchar();while(len<256&&c

6、h!=''){buf[len++]=ch;ch=getchar();}if(len==256){printf("commondistoolong”);exit(-1);厂输入的命令过长则退岀程序*/}buf[len]=‘叭len++;buf[len]=AO1;}广解析buf中的命令,将结果存入arglist屮,命令以回车符号结朿*//*如输入命令为“Is-I/tmp”,则arglist[0],arglist[1],arglist[2]分别为ls,・l和/tmp*/voidexplain_input(c

7、har*buf,int*argcount,chararglist[100][256])char*p=but;char*q=but;intnumber=0;while(1){if(p[0]=='jbreak;if(p[0]==-•)P++;else{q=p;number=0;while((q[0]!=1')&&(q[0]!='j){number++;q++;}//strncpy(arglist「argcount],p,number+1);arglist[*argcount][number]='*;*arg

8、count=*argcount+1;p=q;voiddo_cmd(intargcount,chararglist[100][256]){intflag=0;inthow=0;厂用于指示命令屮是否含冇intbackground=0;/*标识命令屮是否冇后台运彳亍标识符*/intstatus;inti;intfd;char*arg[argcount+1];cha

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

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

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