【发布时间】:2017-10-15 19:15:16
【问题描述】:
有没有办法从内核中的struct sock 类型的对象获取套接字 fd?快速查看struct sock 内部并不能帮助找到看起来像套接字描述符的东西。基本上我需要socket() syscall 返回的内容,它不是存储在“sock”中吗?
我需要在数据包到达 IP 堆栈之前获取fd。
谢谢。
【问题讨论】:
-
fd 编号仅存在于每个进程的基础上,因此不清楚在内核中请求 fd 时需要什么。
-
@Martin,感谢您的评论。基本上,当我有 'struct sock' 对象时,我希望能够知道它对应于用户空间中的哪个
fd。 -
我的意思是,您可能需要以其他方式开始。获取特定进程的文件描述符表,遍历它并检查是否有一些记录指向有问题的套接字。一个或多个用户空间任务中的更多 fd 可以引用同一个套接字。 (抱歉,目前没有详细回答具体怎么做,因为我需要检查一些细节,现在没有时间,如果没有人会更快回答,也许稍后。)
标签: sockets networking linux-kernel system-calls