Comprobación del estado de la red y control de PPP en un programa
-
09-06-2019 - |
Pregunta
Entonces estoy ejecutando PPP en Linux con un módem celular.El programa que estoy escribiendo necesita saber si el enlace está activo antes de enviar cualquier dato.
¿Cuáles son mis opciones para verificar?
- si el enlace esta disponible
- si se enruta a un servidor que controlo (no va a Internet como dije antes)
Además, ¿cuál es la mejor manera de reiniciarlo? Me gustaría tener control del programa sobre cuándo se inicia y se detiene, por lo que supongo que un init.d no es apropiado.Usando system()
no parece dar un PID, ¿hay otras opciones además? fork()
y la manada de exec??()
llamadas?
C en Linux en ARM (distribución personalizada usando buildroot).
Solución
Puedes usar el ip-up
funcionalidad de script de pppd para que ejecute un programa cuando la interfaz IP esté activa y lista.Los detalles están en el página de manual pppd(8) - busque "ip-up".
Para reiniciar pppd, utilice el linkname
parámetro para establecer un nombre de archivo pid conocido (/var/run/ppp-name.pid
).Utilice también el persist
opción.Cuando desee reiniciar pppd, envíe el SIGHUP
señal.Nuevamente, esto se describe en la página de manual.
Otros consejos
Podrías analizar /proc/net/route
.