Проверка состояния сети и управление PPP в программе
-
09-06-2019 - |
Вопрос
Итак, я запускаю PPP под Linux с сотовым модемом.Программа, которую я пишу, должна знать, активна ли ссылка, прежде чем отправлять какие-либо данные.
Какие у меня есть варианты проверки
- если ссылка доступна
- если он направляется на сервер, который я контролирую (он не выходит в Интернет, как я уже говорил ранее)
Кроме того, как лучше всего его перезапустить - я бы хотел, чтобы программа контролировала, когда он запускается и останавливается, поэтому я предполагаю, что init.d не подходит.С использованием system()
похоже, не выдает PID, есть ли другие варианты, кроме fork()
и стайка exec??()
звонки?
C в Linux на ARM (индивидуальное распространение с использованием buildroot).
Решение
Вы можете использовать ip-up
функциональность сценария pppd, позволяющая ему выполнять программу, когда IP-интерфейс включен и готов.Подробности в pppd(8) справочная страница - поиск «ip-up».
Чтобы перезапустить pppd, используйте команду linkname
параметр для установки известного имени pid-файла (/var/run/ppp-name.pid
).Также используйте persist
вариант.Если вы хотите перезапустить pppd, отправьте SIGHUP
сигнал.Опять же, это описано на странице руководства.
Другие советы
Вы могли бы разобрать /proc/net/route
.