欢迎来到天天文库
浏览记录
ID:46434055
大小:86.50 KB
页数:5页
时间:2019-11-23
《实验二Linux进程管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验二Linux进程管理指导教师:俞瑾部门:信息与电子工程学院[实验指导]本节介绍如何使用系统调用创建进程、等待进程和杀死进程。%1)创建进程1.fork系统调用fork调用创建一个新进程。新的进程或者说子进程是调用进程或者说父进程的副木。fork语法是:#ineludepidtfork(void);如果fork执行成功,就向父进程返回子进程的PID,并向子进程返回0。这意味着你只调用fork—次,它也返冋两次。Fork创建的新进程是和父进程一样的副本,包括真实和冇效UID和GID、进程组和会话ID、环境、资源限制、打开的文件以及共享内存段。如下程序淸单展示
2、一个使用8"的简单示例程序。/************************chiId.c***************************/#include^include#includeintmain(void){pid_tchild;if((child=fork())==-l)(perror(,,fork,/);exit(EXIT.FAILURE);}elseif(child==0)(puts("inchild");printf('Atchildpid=%d,,>gctpidO);printf("tch
3、ildppid二%d",getppid());exit(EXIT_SLCCESS);}else(putsCinparent");printf("tparentpid=%d",getpid());printf("tparentppid=%d",getppid());}exit(EXITSUCCESS);}执行命令编译该程序。这个程序的输出应该和下而类似:$./childinparentinchildchildpid=14091childppid=14090parentpid=14090parentppid二1549%1)控制进程1.等待进程wait函数族一旦你用f
4、ork创建一个子进程,为了收集新进程的退出状态并防止出现個进程,父进程应该等待子进程结束。使用wait或waitpid函数可以收集子进程的退出状态。它们的原形如下:^include^includepid_twait(int*status);pid_twaitpid(pid_tpid,int^status,intoptions);status保存子进程的退出状态。Pid是等待进程的PID。Options规尬wait调用的行为应该如何。它可以使WN0IIANG,导致waitpid在没有子进程退出进程时立即返回,也可以^WCNTRAC
5、ED,&味着它应该因为存在没有报告状态的进程而返回。你也可以对它们执行逻辑“或”(0R)操作,取得两种行为(也就是说,给options参数传送WllOHANGlWUNTRACED)。1.杀死进程一个进程由于以下5个原因小的一个而终止。。它的main®数调用了return。它调用了exit。它调用了_exit。它调用了abort。它被一个信号终止前3个理由是正常终止,而后2和则是非法止常终止。但是无论进程为何终止,绘厉都执行相同的内核代码、关闭打开的文件、释放内存资源,并且执行其他要求的清理工作。exit函数这个前数在中声明的原型如F:intexit(ints
6、tatus);exit导致程序止常并且返回父进程的状态(slalus)。.exit函数在中声明。它立即终止调用它的进程。使用abort函数如果你需要界常地终止一个程序,町以使用abort函数。在Liux下,abort还町以让程序产生内存转储(coredump),这是人多数调式器用于分析程序崩溃时的文件。虽然任何打开的文件都被关闭了,但abort函数仍然是个粗暴的调用,应该作为最后的手段來使用,比如你碰到类似严巫内存不足这样的错误,无法用程序的方法处理时再用。Abort也是一个标准库函数,它原型为#includevoidabort(void
7、);下而的程序显示了abort函数如何运行。,丈»丈»丈土乂»丈丈丄丈丄丈丄丈丄丈丄丈丄丈丄/->丈4丈丈4丈丈4丈丈丈丈/^1^^1*[JIJJIIt#include#includeintmain(void)abort();"shouldn'tgethere*/exit(EXIT_Sl'CCESS);}使用gee编译这个程序,并如下执行:$•/abortAbortedSulimityuniimited$・/abortAborted(coredumped
此文档下载收益归作者所有