我试图在Go中基本上做到这一点:
netstat -an | grep 2375 -c
我需要在回归测试中计算到Docker守护程序的连接数,以查看连接泄漏错误。但是,由于我在不同的OS(本地开发盒,CI等)的多个位置运行此程序,因此我不能依赖“netstat”工具,因此我想知道如何在Go中以更具编程性的方式来执行此操作?

我环顾了网上包裹,找不到任何有帮助的东西。有一些库基本上可以代替netstat:

https://github.com/drael/GOnetstat
https://github.com/dominikh/netstat-nat

但是它们不兼容跨平台(Mac和* nix)。知道如何实现吗?

最佳答案

在Linux中,此信息显示在/proc文件系统中。
使用os.Getpid并在/proc/<pid>/fd中查询信息。如果您需要更多的信息,那么很可能在这里简单计数就可以了。

这种事情的跨平台兼容性将由您自己决定,因为为进程识别开放fd的方式非常针对每个平台。如果您只需要编译,并在非linux平台上对此进行一些测试,则可以使用proc man page支持使其在其他平台上不起作用,或者实现适当的解决方案。

关于networking - 如何在Go中计算已建立的连接?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27370650/

10-12 02:43