【问题标题】:Get struct socket*, struct sock * from socket descriptor in a C program on Linux在 Linux 上的 C 程序中从套接字描述符中获取 struct socket*、struct sock *
【发布时间】:2016-05-16 11:52:01
【问题描述】:

我正在 Linux 上开发一个 C 程序(非特权)。

是否可以从套接字描述符中获得对struct socketstruct sock 的引用?

谢谢。

【问题讨论】:

    标签: c linux sockets tcp ip


    【解决方案1】:

    如果您在用户模式下工作(例如,不是内核模式),则不能直接操作内核结构(包括struct sock)。如果确实需要访问这些内核结构,则需要编写在内核模式下运行的代码(可能在内核模块中)。

    【讨论】:

      【解决方案2】:

      看一下 sockfd_lookup_light 函数 (http://lxr.free-electrons.com/source/net/socket.c#L449),系统就是这样做的。

      【讨论】:

      • 我想,应该是sockfd_lookupsockfd_lookup_light 被标记为静态,因此无法从文件外部调用
      • 谢谢你们,我真的到了那里,但没有成功。问题是 sockfd_lookup() 不存在于/usr/include/linux/net.h,但它存在于/usr/src/linux-headers-VERSION/include/linux/net.h
      • 我可以使用gcc 使用这些头文件进行编译吗?生成的二进制文件会在非特权模式下运行吗?
      猜你喜欢
      • 1970-01-01
      • 2017-10-15
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 2015-06-21
      • 1970-01-01
      • 2015-12-24
      相关资源
      最近更新 更多