这是一个轻量、高效的 Linux pstree 命令的 C 语言实现。本项目直接读取操作系统底层数据,在终端中打印出直观的进程树状拓扑图。
本项目为纯 C 编写,无需依赖任何第三方库。
# 编译
gcc pstree.c -o pstree
# 运行
./pstree
💻 命令行用法
支持原生 pstree 的几个核心控制参数:
./pstree:默认输出进程树(同级进程按 字母表 顺序排列)。
./pstree -p:在进程名旁显示对应的 (PID)。
./pstree -n:强制同级进程按 PID 数值 从小到大排序。
./pstree -p -n:同时显示 PID 并按 PID 排序。
./pstree -V:查看程序版本信息。
✨ 核心技术实现
直接解析 /proc:不调用高级命令,通过底层文件系统直接提取实时的进程 PPID 和状态。
LCRS 多叉树结构:在内存中使用经典的“左孩子,右兄弟”链表结构,极低内存消耗实现庞大的树状关系映射。
单链表动态排序:实现双指针有序插入算法,根据用户传入的参数实时改变进程树的排序规则。
带状态递归渲染:使用 DFS(深度优先搜索)和层级状态数组,精准打印 └── 和 ├── 树枝连线。