第一次实验12281201孙杨威.docx
- 文档编号:8988120
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:12
- 大小:626.24KB
第一次实验12281201孙杨威.docx
《第一次实验12281201孙杨威.docx》由会员分享,可在线阅读,更多相关《第一次实验12281201孙杨威.docx(12页珍藏版)》请在冰豆网上搜索。
第一次实验12281201孙杨威
实验一进程管理
计科1202班孙杨威12281201
1.实验目的
●加深对进程概念的理解,明确进程和程序的区别;
●掌握Linux系统中的进程创建,管理和删除操作;
●熟悉使用Linux下的软件开发工具,如gcc。
2.实验任务
1.在一个终端中启动vi文本编辑器。
在另外一个终端中,通过选择合适的开关运行ps命令,查看vi进程的运行参数,试说明显示的每个参数所表达的意义。
2.通过ps命令,寻找vi进程的父进程,直到根进程为止。
记录过程中所有祖先进程ID和名称。
将得到的进程树和由pstree命令的得到的进程树进行比较。
3.使用getpid、getppid系统调用,输出当前进程的ID和其父进程的ID。
4.使用exec系统调用,打开vi编辑器。
5.使用fork系统调用,创建如下进程树,并使每个进程循环输出自己的ID和父进程的ID。
6.在上述进程树中,用命令终止p2进程,观察p1、p3、p4进程的运行参数有何变化。
7.试设置exec()调用失败的一个例子,并输出错误信息。
3.实验过程
(1)实验一
在一个终端中启动vi文本编辑器。
在另外一个终端中,通过选择合适的开关运行ps命令,查看vi进程的运行参数,试说明显示的每个参数所表达的意义。
1.打开一个新的终端,输入vi,按回车,开启一个新的进程,显示结果如下:
2.打开另一个终端,用于ps命令:
3.输入ps-A命令,查看所有进程的ID,如下图可以看到,第一步打开的vi编辑器的id是3452;
输入ps-p3452,查看CPU的运行时间
输入ps-lax查看进程号为3452的进程所有信息,如下图:
UID是用户号,为3452;
PID就是vi进程的进程号,为3452,
PPID就是vi进程的父进程号,为3412;
PRI是内核调度优先级,为20;
NI是进程优先级,为缺省值0;
VSZ是总虚拟内存大小,以byte计;
RSS是进程使用的总物理内存数,以Kbytes计;
STAT是进程状态,属于静止状态;
TTY是终端的次要装置号码;
TIME为使用cpu的时间;
(2)实验二
通过ps命令,寻找vi进程的父进程,直到根进程为止。
记录过程中所有祖先进程ID和名称。
将得到的进程树和由pstree命令的得到的进程树进行比较。
1.利用grep命令搜索其父进程,直到找到进程号为1为止
可以看到搜索父进程顺序为:
3452——>3412——>3405——>2645——>2194——>1516——>1
输入命令pstree-p查看进程树:
发现两种方式所得结果一样
(3)实验三
使用getpid、getppid系统调用,输出当前进程的ID和其父进程的ID。
c代码如下:
#include
intmain(){
printf("currentprogress:
");
printf("%d\n",getpid());
printf("parentprogress:
");
printf("%d\n",getppid());
}
运行结果如图:
(4)实验四
使用exec系统调用,打开vi编辑器。
C++代码如下:
#include
#include"cstdio"
#include"sys/types.h"
#include"unistd.h"
usingnamespacestd;
intmain()
{
intres=execl("/usr/bin/vi","vi",NULL);
if(res==-1)
perror("execl");
return0;
}
运行结果:
(5)实验五
使用fork系统调用,创建如下进程树,并使每个进程循环输出自己的ID和父进程的ID。
C代码如下:
#include"stdio.h"
#include"sys/types.h"
#include"unistd.h"
#include"stdlib.h"
#defineHASPRO-10
intmain()
{
pid_tp1,p2,p3,p4;
intcnt=0;
while((p1=fork())==-1);
if(!
p1)
{
while((p2=fork())==-1);
if(!
p2)
{
while((p3=fork())==-1);
if(!
p3)
{
while
(1)
{
printf("Nodep3isp2'schildwithpid%d,it'sparentpid%d.\n",getpid(),getppid());
//wait(0);
}
}
else
{
while((p4=fork())==-1);
if(!
p4)
{
while
(1)
{
printf("Nodep4isp2'schildwithpid%d,it'sparentpid%d.\n",getpid(),getppid());
//wait(0);
}
}
else
{
;
}
}
while
(1)
{
printf("Nodep2isp1'schildwithpid%d,it'sparentpid%d.\n",getpid(),getppid());
//wait(0);
}
}
else
{
;
}
while
(1)
{
printf("Nodep1isparentwithpid%d,it'sparentpid%d.\n",getpid(),getppid());
//wait(0);
}
}
else
{
;
}
return0;
}
在终端输入gccnew.c-onew,再输入./a.out运行结果如下:
可以看到p1进程的ID号为4278;
P2进程的ID号为4279,其父进程为4278,即p1;
P3进程的ID号为4280,其父进程为4279,即p2;
P4进程的ID号为4281,其父进程为4279,即p2;
(6)实验六
在上述进程树中,用命令终止p2进程,观察p1、p3、p4进程的运行参数有何变化。
输入命令ps-Al|egrep-ea.out得到进程信息,再输入pstree查看进程树
(7)试验七
试设置exec()调用失败的一个例子,并输出错误信息。
实验4程序改为:
#include
#include"cstdio"
#include"sys/types.h"
#include"unistd.h"
usingnamespacestd;
intmain()
{
intres=execl("/bin/vi","vi",NULL);
if(res==-1)
perror("execl");
return0;
}
运行结果:
结果为找不到文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一次 实验 12281201 孙杨威
![提示](https://static.bdocx.com/images/bang_tan.gif)