Verificando o status da rede e controlando o PPP em um programa
-
09-06-2019 - |
Pergunta
Então estou executando o PPP no Linux com um modem celular.O programa que estou escrevendo precisa saber se o link está ativo antes de enviar qualquer dado.
Quais são minhas opções para verificar
- se o link estiver disponível
- se for roteado para um servidor que eu controlo (não vai para a internet como eu disse antes)
Além disso, qual é a melhor maneira de reiniciá-lo - gostaria de ter controle do programa sobre quando ele inicia e para, então presumo que um init.d não seja apropriado.Usando system()
não parece fornecer um PID, existem outras opções além fork()
e o bando de exec??()
chamadas?
C no Linux em ARM (distribuição personalizada usando buildroot).
Solução
Você pode usar o ip-up
funcionalidade de script do pppd para que ele execute um programa quando a interface IP estiver ativa e pronta.Os detalhes estão no Página de manual do pppd(8) - procure por "ip-up".
Para reiniciar o pppd, use o linkname
parâmetro para definir um nome de arquivo pid conhecido (/var/run/ppp-name.pid
).Use também o persist
opção.Quando você quiser reiniciar o pppd, envie o SIGHUP
sinal.Novamente, isso é descrito na página de manual.
Outras dicas
Você poderia analisar /proc/net/route
.