Networking ioctl(TUNSETIFF):设备或资源正忙

Networking ioctl(TUNSETIFF):设备或资源正忙,networking,linux-device-driver,vpn,tun,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

我无法设置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;
static int get_接口(char*name){
int接口=打开(“/dev/net/tun”,O|RDWR | O|NONBLOCK);
结构ifreq-ifr;
memset(&ifr,0,sizeof(ifr));
ifr.ifr_flags=IFF_TUN | IFF_NO_PI;
strncpy(ifr.ifr_名称、名称、大小(ifr.ifr_名称));
if(ioctl(接口、TUNSETIFF(无效*)&ifr)<0){
perror(“无法获取TUN接口”);
出口(1);
}
返回接口;

}

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

用户模式Linux实用程序包含用于操作TUN和TAP设备的工具。窥视那里的源头。