我需要获取文件描述符,以便在Linux中使用ioctl()调用以太网端口。不知道怎么做。
答案 0 :(得分:3)
使用传递给ifreq
的{{1}}结构中的设备名称,只需使用打开套接字的文件描述符,假设您的程序具有足够的权限。
来自文档:
Linux支持一些标准的ioctl 配置网络设备。他们能 用于任何套接字的文件 描述符,无论家庭或 类型。他们传递了一个ifreq结构:
套接字不需要绑定到目标设备,也不需要属于任何特定系列。任何打开的套接字fd都会(再次,具有适当的权限),只需为您的特定任务打开一个,等待ioctl()
返回并关闭它。
如果您没有安装相应的文档包,请参阅ioctl()
;如果您没有安装相应的文档包,请参阅here(提示,包通常名为man 7 netdevice
或manpages-dev
,具体取决于在你的发行版上)
您还可以查看manpages-devel
包的来源,根据您的发行版可能会有不同的名称。这是net-tools
(Debian / Ubuntu)的来源。
对不起原来的歧义,我以为你试图配置一个特殊的多功能设备(不知道为什么现在,也许是睡眠不足)。
答案 1 :(得分:1)
你可以这样做fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP)
使用strace
查看 ifconfig 调用的函数。