У мене є невеличка програма Java, яка щосекунди викликує InetAddress.getByName ("example.com"). Коли я запускаю його на вікні CentOS 6.4, використовуючи 'strace -f', я бачу, що /etc/resolv.conf відкривається і читається один раз:
$ grep /etc/resolv.conf strace.out
[pid 24810] open("/etc/resolv.conf", O_RDONLY) = 6
Коли я запускаю його на Debian 7, я бачу, що /etc/resolv.conf повторно відкривається або 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
В обох системах налаштовано /etc/nsswitch.conf
хости: файли dns
Жодна система не має демона кешування імен.
Я використовував одну і ту ж версію Oracle HotSot Java JVM на обох машинах, щоб виключити будь-які відмінності Java.
У вікні CentOS 6.4 встановлено glibc 2.12. У вікні Debian 7 встановлено glibc 2.13.
Що пояснює різну поведінку між двома операційними системами щодо відкриття та читання /etc/resolv.conf?