作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
有没有一种方法可以将网络连接绑定(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。获得一个或另一个是微不足道的,但以低成本的方式将两者放在一起似乎很困难。感谢您到目前为止的回答!
最佳答案
我不知道你需要多久轮询一次,或者你所说的“昂贵”是什么意思,但是如果选择正确,netstat
和 lsof
都会运行很多次比默认配置更快。
示例:
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/
我是一名优秀的程序员,十分优秀!