LinuxでEthernetケーブルが抜けたかどうかを判断する方法。
ネットワークインターフェイス名がeth0の場合、
cat /sys/class/net/eth0/carrier
で表示される値で判断できる。0が断線状態。1が活線状態。
なのでこれを監視すれば簡単にケーブルの抜き差しが判断できる。
ただし、sysfsやprocfsなどではinotifyが使えない。なので自分でプログラムで判断する場合は
https://stackoverflow.com/questions/26672414/inotify-add-watch-fails-on-sys-class-net-eth0-operstate
にあるように、netlinkを使ってイベントを取得する必要がある。
ただ、ネットワークインターフェイスが複数ある場合、どのインターフェイスのLANケーブルが抜けたかわからない。
この場合、先に述べた/sys/class/net/eth0/carrierの値と組み合わせたりして判別する必要がある。
もっと良い方法がありそうと思って調べてみたけど、どうもこれだ、って方法が見つからない。
とりあえずこの方法でお茶を濁すことにする。