首页 > 系统 > Linux >

打印Linux系统进程树

2017-04-17

打印Linux系统进程树:一、实验题目,打印Linux系统进程树,二、实验目的:1、 理解task_struct 结构及进程管理机制。

打印Linux系统进程树:一、实验题目,打印Linux系统进程树,二、实验目的:1、 理解task_struct 结构及进程管理机制。

2、了解内核链表遍历机制

3、 掌握Linux

三、实验平台

Linuxmint18.1操作系统和VMware虚拟机

四、实验要求

在Linux环境下,用C语言编写一个程序,以树状结构(即体现父子关系)输出系统当前所有进程。

五、设计思路和流程图

思路:通过访问task_struct结构来遍历所有进程,打印出进程树。

流程:

1、定义结构体,其中定义pid为进程号,ppid为父进程号,name为进程名称,flag为进程标志,rec为进程树层数,方便打印。

2、 通过init_task获取初始指针,即系统开始创建的进程0的指针,他是进程树最高的节点,由它作为入口遍历整个进程树。

3、每个后续的节点肯定有一个父节点,0或者多个子节点,形成一个进程树。在打印过程中使用中序遍历,可以打印出进程树。

4、编好代码后进入目录,运行gcc pstree.c -o pstree.o可以编译出pstree.o,之后运行./pstree.o可以在终端打印出进程树来。

七、实验体会

刚开始gcc出现故障,原来是重装了系统后没有加载一些h头文件,使用命令apt-get install libc6-dev后装载可以了。

在打印进程树发现了所有人代码都是init进程的后代,所以除了第一个进程其他进程前都有一个空格。

相关文章
最新文章
热点推荐