嵌入式操作系统Li
ux实验报告
专业:计算机科学与技术班级:13419011学号:1341901124姓名:武易组员:朱清宇
f实验一
一实验目的
Li
ux下进程的创建
1掌握Li
ux下进程的创建及退出操作2了解fork、execl、wait、waitpid及之间的关系
二实验内容
创建进程,利用fork函数创建子进程,使其调用execl函数,退出进程后调用wait或waitpid清理进程。
三实验过程
1进程的创建许多进程可以并发的运行同一程序,这些进程共享内存中程序正文的单一副本,但每个进程有自己的单独的数据和堆栈区。一个进程可以在任何时刻可以执行新的程序,并且在它的生命周期中可以运行几个程序;又如,只要用户输入一条命令,shell进程就创建一个新进程。fork函数用于在进程中创建一个新进程,新进程是子进程。原型如下i
cludesystypesh提供类型pid_t的定义i
cludeu
istdhpid_tforkvoid使用fork函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间fork系统调用为父子进程返回不同的值,fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:在父进程中,fork返回新创建子进程的进程ID;提供函数的定义
f在子进程中,fork返回0;如果出现错误,fork返回一个负值;用fork创建子进程后执行的是和父进程相同的程序,子进程可以通过调用exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程(例如其mai
函数)开始执行。调用exec并不创建新进程,进程ID并未改变,只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。exec函数原型execl,execlp,execle,execv,execve和execvp2进程的退出一个进程正常终止有三种方式:由mai
函数返回;调用exit函数;调用_exit或_Exit函数。i
cludestdlibhi
cludeu
istdhexit:voidexiti
tstatus_exit:void_exiti
tstatus3wait和waitpid一个进程调用了exit之后,该进程并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构。在Li
ux进程的5种状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集。如果一个进程已经终止,但是
f它的父进程尚未调用wait或waitpid对它进行清理,这时的进程状态称为僵尸(Zombie)进程。该类进程保留了一定的信息(包括pID,退出状r