我正在编写一个程序,使用ioctl
在Python中为beaglebone black分配IP地址。Beagleboard IP分配代码中struct.pack()参数的含义
(参考How to assign IP address to interface in python?和Getting IP address of the beagleboard using python)
由于Linux内核实现IOCTL
方法需要的所有参数被传递到特定的结构。因此,我将所有这些参数构造为一个结构,然后传递给IOCTL
。
bin_ip = socket.inet_aton('192.168.0.1')
ifreq = struct.pack('16sH2s4s8s', 'eth0', socket.AF_INET, '\x00'*2, bin_ip, '\x00'*8)
发现第一个参数的局部意义在https://docs.python.org/3.0/library/struct.html作为s= char[] and H = unsigned short
什么是与s
和H
编辑写入编号16 2 4 8的含义:对于“S”格式字符,计数被解释为字节的长度,例如,16s
手段单一16-byte string
随后1 unsigned short
,2-byte string
,4-byte string
,8-byte string
为什么第四argum ent是'\x00\x00'
,最后一个参数是'\x00\x00\x00\x00\x00\x00\x00\x00'
?这是标准格式/预期格式吗?
谢谢。帮助我清理了我的概念。 – daemon7osh