2008-09-09 4 views
3

Je lance donc PPP sous Linux avec un modem cellulaire. Le programme que j'écris doit savoir si le lien est actif avant d'envoyer des données.Vérification de l'état du réseau et contrôle de PPP dans un programme

Quelles sont mes options pour vérifier

  • si le lien est disponible
  • s'il achemine vers un serveur je contrôle (il ne va pas à l'Internet comme je l'ai dit plus tôt)

De plus, quel est le meilleur moyen de le redémarrer? Je voudrais avoir le contrôle du programme quand il démarre et s'arrête, donc je suppose qu'un init.d n'est pas approprié. En utilisant system() ne semble pas donner un PID, y at-il d'autres options en plus de fork() et le nombre de exec??() appels?

C sur Linux sur ARM (distribution personnalisée à l'aide de buildroot).

+0

@Adam: Rép récalc terminée. Désolé pour vous la perte. :( –

+0

Oh hé, merci, la perte était minime, je pensais honnêtement que ce serait beaucoup plus grand avec tout ce qui a été migré au fil du temps. –

Répondre

6

Vous pouvez utiliser la fonctionnalité de script ip-up de pppd pour exécuter un programme lorsque l'interface IP est prête. Les détails sont dans le pppd(8) man page - recherche de "ip-up".

Pour redémarrer pppd, utilisez le paramètre linkname pour définir un nom de fichier pid connu (/var/run/ppp-name.pid). Utilisez également l'option persist. Lorsque vous souhaitez redémarrer pppd, envoyez le signal SIGHUP. Encore une fois, cela est décrit dans la page de manuel.

3

Vous pouvez analyser /proc/net/route.

Questions connexes