Проверка состояния сети и управление PPP в программе

StackOverflow https://stackoverflow.com/questions/51296

Вопрос

Итак, я запускаю 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top