Question

Est-il prudent de supposer que la carte réseau en boucle sur un système Linux sera toujours appelée "lo" - s'agit-il simplement d'une convention de dénomination qui peut ne pas être respectée, ou doit-il toujours en être ainsi?

Était-ce utile?

La solution

Je ne connais aucun système Linux doté d'une interface de bouclage autre que lo . Je m'appuierais sur cette convention de dénomination si j'écris un script spécifique au système, mais pas lors de l'écriture d'un programme portable. Par exemple, le bouclage dans OSX est lo0 .

Un moyen fiable en C d’appeler un SIOCGIFCONF ioctl sur une socket, itère sur les interfaces, appelle SIOCGIFFLAGS ioctl sur chaque interface et en vérifiant quelles interfaces ont un jeu d'indicateurs IFF_LOOPBACK (voir /usr/include/linux/if.h ).

SIOCGIFCONF vous donnera également les noms d'interface.

Autres conseils

D'après mon expérience, il s'agit d'un nom commun, même si vous ne devriez pas toujours lui faire confiance. Peut-être qu’énumérer les interfaces et rechercher celle avec une adresse de 127.0.0.1 serait la solution?

C’est une convention assez ancienne. En fait, je n’ai pas encore vu de distribution / distribution Linux qui ne l’appelle pas «lo».

Cependant, les noms de périphérique dans les systèmes * nix sont si variés qu'on peut supposer qu'ils vont changer. Utilisez les normes si vous voulez la portabilité (dans ce cas, 127.0.0.1).

Les interfaces peuvent être renommées à votre guise - mais toute personne qui renommera l’interface de bouclage est extrêmement ridicule et mérite d’avoir un système inutilisable:)

Oui, vous pouvez énumérer les interfaces et obtenir leurs noms. Mais il est peut-être aussi facile de supposer que cela va être "lo".

Utiliser 127.0.0.1 est probablement le moyen le plus sûr d’y parvenir.

RFC3330 définit le 127.0.0.0/8 comme étant toujours le sous-réseau de bouclage.

L'utilisation de localhost est toutefois définie sous Windows dans c: \ windows \ system32 \ drivers \ etc \ hosts et Linux dans / etc / hosts est purement conventionnel. De plus, le nom lo est le nom typique donné à l'interface localehost sous Linux.

Si vous devez être absolument certain, utilisez 127.0.0.1 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top