2008-09-09 8 views
3

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

Какие есть варианты, чтобы проверить

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

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

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

+0

@ ADam: Rep recalc complete. Извините за потерю. :( – 2009-12-04 18:50:19

ответ

6

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

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

3

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