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

时间:2016-05-04 11:16:37

标签: networking linux-device-driver vpn tun

我无法设置TUN界面。我搜索到的每个地方都说设备应该扎根。 我在我的ubuntu 14.04系统上设置了proxyserver

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;

}

1 个答案:

答案 0 :(得分:0)

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