我需要获取文件描述符以在ioctl()调用中用于Linux中的以太网端口.不确定如何执行此操作.
解决方法:
假设您的程序具有足够的权限,只需使用开放套接字的文件描述符,并使用传递给ioctl()的ifreq结构中的设备名称即可.
从文档:
Linux supports some standard ioctls to
configure network devices. They can
be used on any socket’s file
descriptor regardless of the family or
type. They pass an ifreq structure:
套接字不必绑定到目标设备,也不必是任何特定系列的.任何打开的套接字fd都会这样做(同样具有适当的特权),只需为您的特定任务打开一个套接字,然后等待ioctl()返回并关闭它即可.
有关更多信息,请参见man 7 netdevice;如果没有安装适当的文档包,请参见here(提示,该包通常根据您的发行版而命名为manpages-dev或manpages-devel).
您还可以查看net-tools软件包的源代码,根据发行版的不同,其名称可能有所不同.这就是ifconfig的来源(此处为Debian / Ubuntu).
抱歉,最初的模棱两可,我以为您正在尝试配置特殊的多功能设备(不确定为什么现在这样做,也许睡眠不足).