ioctl (TUNSETIFF) :设备或资源忙

use*_*000 5 vpn networking linux-device-driver tun

我无法设置 TUN 接口。我到处搜索,它都说设备应该被root。我正在我的 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;
Run Code Online (Sandbox Code Playgroud)

}

小智 1

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