我需要获取文件描述符以在 ioctl() 调用中使用 Linux 中的以太网端口。不知道该怎么做。
问问题
3613 次
2 回答
3
只需使用打开套接字的文件描述符,使用ifreq
传递给的结构中的设备名称ioctl()
,假设您的程序有足够的权限这样做。
从文档:
Linux 支持一些标准的 ioctl 来配置网络设备。它们可以用在任何套接字的文件描述符上,不管是什么系列或类型。它们传递一个 ifreq 结构:
套接字不需要绑定到目标设备,也不需要属于任何特定的系列。任何打开的套接字 fd 都可以(同样,具有适当的权限),只需为您的特定任务打开一个,等待ioctl()
返回并关闭它。
查看man 7 netdevice
更多信息,或者如果您没有安装适当的文档包,请参见此处manpages-dev
(提示,该包通常命名为or manpages-devel
,具体取决于您的发行版)
您还可以查看net-tools
包的源代码,根据您的发行版,它的名称可能会有所不同。那是ifconfig
(Debian / Ubuntu here)的来源。
抱歉最初的含糊不清,我以为您正在尝试配置特殊的多功能设备(现在不知道为什么,可能是睡眠不足)。
于 2010-06-15T17:57:45.243 回答
1
你可以做这样的事情fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP)
用于strace
查看 ifconfig调用的函数。
于 2010-06-15T18:11:33.690 回答