J'ai un petit programme Java qui boucle en appelant InetAddress.getByName ("example.com") chaque seconde. Lorsque je l'exécute sur une boîte CentOS 6.4 en utilisant 'strace -f', je vois que /etc/resolv.conf est ouvert et lu une fois:
$ grep /etc/resolv.conf strace.out
[pid 24810] open("/etc/resolv.conf", O_RDONLY) = 6
Quand je l'exécute sur Debian 7, je vois que /etc/resolv.conf est ouvert à plusieurs reprises ou stat () 'd:
$ grep /etc/resolv.conf strace.out
[pid 41821] open("/etc/resolv.conf", O_RDONLY) = 10
[pid 41821] stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
[pid 41821] open("/etc/resolv.conf", O_RDONLY) = 10
[pid 41821] stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
[pid 41821] stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
Les deux systèmes ont /etc/nsswitch.conf configuré avec
hôtes: fichiers dns
Aucun des deux systèmes n'a de démon de mise en cache de noms en cours d'exécution.
J'ai utilisé la même version de la JVM Java Oracle HotSot sur les deux machines pour exclure toute différence Java.
La boîte CentOS 6.4 a installé la glibc 2.12. La boîte Debian 7 a installé la glibc 2.13.
Qu'est-ce qui explique le comportement différent entre les deux systèmes d'exploitation en ce qui concerne l'ouverture et la lecture de /etc/resolv.conf?