Теперь мне нужно получить статус NIC (вверх или вниз) в реальном времени. Это означает, что я должен поймать прерывание ядра, когда NIC вверх или вниз в заблокированном цикле.
Первый глупый метод от моего - это проверить /sys/class/net/eth0/operstate или использовать ioctl, чтобы получить ifflag каждые 100 мс в цикле, Но 100 мс слишком долго для приложения, чтобы перенаправить трафик, а также опросить ядро каждые 100 мс, это не очень хорошая идея.
Как только я замечаю функцию inotify, которая может контролировать файлы в блочном режиме. Но, к сожалению, он не может контролировать файл /sys/class/net/eth 0/operstate, поскольку/sys находится в ОЗУ не на диске.
Итак, существуют ли какие-либо методы, кроме написания модуля ядра, чтобы поймать прерывание NIC (вверх/вниз) в программе C с блочным режимом?