0

我有一个这样创建的点击界面:

ip tuntap add dev tap0 mode tap user myusername
ip link set tap0 up

然后我附加到tap0使用 python 和另一个用 C++ 编写的程序

Python:

def tapAlloc(tapname, mode):
    tap = os.open('/dev/net/tun', mode | os.O_NONBLOCK)
    ifr = struct.pack('16sH', tapname, IFF_TAP | IFF_NO_PI)
    fcntl.ioctl(tap, TUNSETIFF, ifr)
    return tap

(仅用于模拟)如果我尝试附加到 tap0 两次:

f1 = tapAlloc('tap0', os.O_RDWR) 
f2 = tapAlloc('tap0', os.O_RDWR) 

当我运行它时出现错误f2

fcntl.ioctl(tap, TUNSETIFF, ifr)
IOError: [Errno 16] Device or resource busy 

如何从多个进程附加到 Tap 接口?

4

0 回答 0