我需要获取机器上所有打开的端口以及打开它们的应用程序的列表。我需要以编程方式获取此信息。
谢谢。
我希望能有一个更聪明的答案。我只是这样做(用Python编程),试图重写一个名为NetHogs的程序。我的版本在这里,特别是这里是Python中用于从中解析表的模块/proc。如果您不是精通Python的人(请学习它),那么请看一下原始的NetHogs,它使用了C / C ++的混合(阅读起来很麻烦,因此需要重写)。
/proc
值得注意的是,解析/proc操作系统中的套接字信息的大量或快速重复尝试非常占用CPU资源,因为操作系统必须处理所做的每个系统调用,并动态解析内部结构。这样,您会在我链接到的两个项目的源代码中找到一些缓存和时序假设。
简而言之,您需要将为每个进程指定的套接字inode与中给定/proc/<pid>/fd的连接相关联/proc/net/<proto>。再次,示例解析以及如何找到所有这些都存在于两个项目中。
/proc/<pid>/fd
/proc/net/<proto>