ioctl (TUNSETIFF) : 设备或资源繁忙

Posted

技术标签:

【中文标题】ioctl (TUNSETIFF) : 设备或资源繁忙【英文标题】:ioctl (TUNSETIFF) : device or resource busy 【发布时间】:2016-08-29 19:18:28 【问题描述】:

我无法设置 TUN 接口。我到处搜索,它说设备应该植根。 我正在我的 ubuntu 14.04 系统上设置代理服务器

static int get_interface(char *name) 
int interface = open("/dev/net/tun", O_RDWR | O_NONBLOCK);
struct ifreq ifr;
memset(&ifr, 0, sizeof(ifr));
ifr.ifr_flags = IFF_TUN | IFF_NO_PI;   
strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));

if (ioctl(interface, TUNSETIFF, (void *)&ifr) < 0) 
    perror("Cannot get TUN interface");
    exit(1);


return interface;

【问题讨论】:

用户模式 ​​Linux 实用程序包含用于操作 TUN 和 TAP 设备的工具。窥探那里的源头。 user-mode-linux.sourceforge.net/downloads.html 【参考方案1】:

检查您的设备名称(即 ifr.ifr_name)。另一个进程可能使用相同的设备。例如,您可能正在尝试使用 tun0,而另一个进程已经打开了它。

【讨论】:

以上是关于ioctl (TUNSETIFF) : 设备或资源繁忙的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 ioctl 调用或其他方式确定 SCSI 设备(例如 /etc/sda)是不是为磁盘?

c ++设备不合适的ioctl

具有多个读取操作、ioctl 或 fops 的 Linux USB 驱动程序?

IOCTL Linux 设备驱动程序 [关闭]

vxworks - ioctl(SIOCGIFCONF) 错误

可以检查 ioctl 的权限