我如何获得与打开它们的应用程序相关联的端口?

Nig*_*ker 5 c++ linux

我需要获取我的机器上所有已打开端口的列表以及打开它们的应用程序.我需要以编程方式获取此信息.

谢谢.

Mat*_*ner 2

我希望能出现一个更聪明的答案。我就是这么做的(用 Python 编程),试图重写一个名为 NetHogs 的程序。我的版本在这里,特别是Python中用于解析表的模块/proc。如果您不懂Python(去学习它),那么请看一下原始的 NetHogs,它使用了 C/C++ 的混合(并且阅读起来有点痛苦,因此需要重写)。

值得注意的是,大量或快速重复尝试解析套接字信息/proc是 CPU 密集型的,因为操作系统必须处理所做的每个系统调用,并动态解析内部结构。因此,您会在我链接到的两个项目的源代码中找到一些缓存和时间假设。

缺点是,您需要将每个进程给定的套接字 inode 与 中/proc/<pid>/fd给定的连接相关联/proc/net/<proto>。同样,示例解析以及如何定位所有这些内容都存在于两个项目中。