を使用して、Python でビーグルボーン ブラックに IP アドレスを割り当てるプログラムを作成していましたioctl
。
(参照How to assign IP address to interface in python? and Getting IP address of the beeagleboard 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
書かれた数字 16 2 4 8 の意味として s
H
編集: 's' フォーマット文字の場合、カウントはバイトの長さとして解釈されます。たとえば、16s
単一の16-byte string
後に1 unsigned short
, 2-byte string
,が続くことを意味します4-byte string
。8-byte string
なぜ 4 番目の引数が'\x00\x00'
、最後の引数が'\x00\x00\x00\x00\x00\x00\x00\x00'
? これは標準の形式ですか、それとも期待される形式ですか?