我有一个这样创建的点击界面:
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 接口?