を使用して、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 の意味として sH
編集: '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'? これは標準の形式ですか、それとも期待される形式ですか?