我希望能出现一个更聪明的答案。我就是这么做的(用 Python 编程),试图重写一个名为 NetHogs 的程序。我的版本在这里,特别是Python中用于解析表的模块/proc。如果您不懂Python(去学习它),那么请看一下原始的 NetHogs,它使用了 C/C++ 的混合(并且阅读起来有点痛苦,因此需要重写)。
值得注意的是,大量或快速重复尝试解析套接字信息/proc是 CPU 密集型的,因为操作系统必须处理所做的每个系统调用,并动态解析内部结构。因此,您会在我链接到的两个项目的源代码中找到一些缓存和时间假设。
缺点是,您需要将每个进程给定的套接字 inode 与 中/proc/<pid>/fd给定的连接相关联/proc/net/<proto>。同样,示例解析以及如何定位所有这些内容都存在于两个项目中。