【发布时间】:2016-05-16 11:52:01
【问题描述】:
我正在 Linux 上开发一个 C 程序(非特权)。
是否可以从套接字描述符中获得对struct socket 或struct sock 的引用?
谢谢。
【问题讨论】:
我正在 Linux 上开发一个 C 程序(非特权)。
是否可以从套接字描述符中获得对struct socket 或struct sock 的引用?
谢谢。
【问题讨论】:
如果您在用户模式下工作(例如,不是内核模式),则不能直接操作内核结构(包括struct sock)。如果确实需要访问这些内核结构,则需要编写在内核模式下运行的代码(可能在内核模块中)。
【讨论】:
看一下 sockfd_lookup_light 函数 (http://lxr.free-electrons.com/source/net/socket.c#L449),系统就是这样做的。
【讨论】:
sockfd_lookup。 sockfd_lookup_light 被标记为静态,因此无法从文件外部调用
/usr/include/linux/net.h,但它存在于/usr/src/linux-headers-VERSION/include/linux/net.h。
gcc 使用这些头文件进行编译吗?生成的二进制文件会在非特权模式下运行吗?