networking - ioctl (TUNSETIFF) : device or resource busy

标签 networking linux-device-driver vpn tun

我无法设置 TUN 接口(interface)。我到处搜索,它说设备应该 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;

}

最佳答案

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

关于networking - ioctl (TUNSETIFF) : device or resource busy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37026255/

相关文章:

c - 了解 file_operations 的 loff_t *offp

linux-kernel - 如何从/proc/devices中删除动态分配的主设备号?

linux - 在没有 O_SYNC 的情况下使用 O_DIRECT 是否安全?

Azure 站点到多站点 VPN 部署

ios - iPhone 从 sleep 模式返回后 VPN 无法工作

android - 在 Android 上连接到 IBM VPN

java - Square Retrofit Client : How to enable/disable followRedirects? 如何拦截重定向URL?

c# - 在 PowerShell 中,如何确定当前驱动器是否为网络驱动器?

php - PHP socket_accept在非阻塞模式下引发警告

c++ - Arduino 在 Linux 上的多个 http 请求期间挂起,但在 Windows 上不挂起