3

私のプログラムは、イーサネット インターフェイスがいつRUNNING状態になるかを検出する必要があります。

次を使用して、実行中のフラグをポーリングできますioctl()

if( ioctl( dummy_fd, SIOCGIFFLAGS, &ifr ) != -1 )
    return ifr.ifr_flags & IFF_RUNNING;

ただし、ポーリングせずにすぐに情報が必要です。現在、プログラムはselect()他のイベントを待つために使用しています。select()そのため、インターフェースの状態変化を検出するために使用するとよいでしょう。

でそれを行う方法がありますselect。ネットからそれについて読みました。しかし、そのページはもう見つかりません。

4

1 に答える 1

4

カーネルは、ネットワーク インターフェイスの変更に関する情報を netlink 経由で送信します。例については、たとえばこちらを参照してください http://softengcrunch.blogspot.cz/2010/12/communicating-with-kernel-via-netlink.html ネットリンクイベントの後にポーリングを行うのが手っ取り早いハックです (select がウェイクしたとき)。実際にネットリンクパケットを解析せずに、ネットリンクソケットにアップします;)

于 2012-10-19T10:36:25.827 に答える