1

を使用して、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 string8-byte string

なぜ 4 番目の引数が'\x00\x00'、最後の引数が'\x00\x00\x00\x00\x00\x00\x00\x00'? これは標準の形式ですか、それとも期待される形式ですか?

4

1 に答える 1