Проверка состояния сети и управление PPP в программе - PullRequest
3 голосов
/ 09 сентября 2008

Итак, я запускаю PPP под Linux с сотовым модемом. Программа, которую я пишу, должна знать, активна ли ссылка, прежде чем отправлять какие-либо данные.

Какие варианты я могу проверить

  • если ссылка доступна
  • если он направляется на сервер, которым я управляю (он не идет в интернет, как я уже говорил ранее)

Кроме того, каков наилучший способ перезапустить его - я бы хотел, чтобы программа контролировала его запуск и остановку, поэтому я предполагаю, что init.d не подходит. Использование system(), похоже, не дает PID, есть ли другие варианты, кроме fork() и множества вызовов exec??()?

C в Linux на ARM (пользовательский дистрибутив с использованием buildroot).

Ответы [ 2 ]

6 голосов
/ 02 октября 2008

Вы можете использовать функцию сценария ip-up в pppd, чтобы он запускал программу, когда IP-интерфейс настроен и готов. Подробности в справочной странице pppd (8) - поиск по "ip-up".

Чтобы перезапустить pppd, используйте параметр linkname, чтобы установить известное имя pidfile (/var/run/ppp-name.pid). Также используйте опцию persist. Если вы хотите перезапустить pppd, отправьте сигнал SIGHUP. Опять же, это описано в справочной странице.

3 голосов
/ 09 сентября 2008

Вы можете разобрать /proc/net/route.

...