我有一个这样创建的点击界面:
ip tuntap add dev tap0 mode tap user myusername
ip link set tap0 up
然后我使用python和另一个用C ++编写的程序附加到tap0
的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界面?