linux - 如何在不使用 lsof 或 netstat 的情况下将网络连接绑定(bind)到 PID?

标签 linux networking solaris pid

有没有一种方法可以将网络连接绑定(bind)到 PID(进程 ID)而无需 fork 到 lsof 或 netstat?

当前 lsof 用于轮询哪些连接属于哪个进程 ID。然而,lsof 或 netstat 在繁忙的主机上可能非常昂贵,并且希望避免不得不使用这些工具。

是否有类似于/proc/$pid 的地方可以找到此信息?我通过检查/proc/net 知道网络连接是什么,但无法弄清楚如何将其与 pid 联系起来。/proc/$pid 里面好像没有网络信息。

目标主机是 Linux 2.4 和 Solaris 8 到 10。如果可能,Perl 的解决方案,但我愿意使用 C/C++。

补充说明:

我想强调这里的目标是将网络连接绑定(bind)到 PID。获得一个或另一个是微不足道的,但以低成本的方式将两者放在一起似乎很困难。感谢您到目前为止的回答!

最佳答案

我不知道你需要多久轮询一次,或者你所说的“昂贵”是什么意思,但是如果选择正确,netstatlsof 都会运行很多次比默认配置更快。
示例:

netstat -ltn

仅显示 l监听 tcp 套接字,并省略默认情况下打开的(慢)name 分辨率。

lsof -b -n -i4tcp:80

省略所有b锁定操作、n名称解析,并将选择限制为端口 80 上的 IPv4 tcp 套接字。

关于linux - 如何在不使用 lsof 或 netstat 的情况下将网络连接绑定(bind)到 PID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/838317/

相关文章:

linux - 在 sed 替换中使用 $HOSTNAME

linux - Apache 背后的 Jira、Tomcat 和 JBoss

c++ - 错误 : implicit declaration of function `int open(...)'

linux - 从 10000 个文件中并行搜索特定字符串模式

c++ - gdb 自动进入内联函数

linux - 维护文件内的文件和文件夹权限

ruby - 监控 Ruby 脚本,使用 Monit - 包括 RVM

networking - 跨计算机网络的原子更新同步

linux - 将 Web 服务器从端口 5000 重定向到本地主机上的端口 80 (Fedora)

networking - 在新的 Unity Networking 中,RPC 相当于什么?