web-dev-qa-db-ja.com

/etc/resolv.confを更新するには、アプリケーションを再起動する必要があります

組み込みLinuxターゲット(ARM)を使用していますが、次の問題があります。プロセスの実行中に/etc/resolv.confが更新されると(たとえば、gethostbyname()を使用するCプログラム)、実行中のプロセスは再起動されるまで、新しいネームサーバーエントリ。

DNSエントリはsystemd-resolve-i eth0 --set-dns = "ipaddr"で作成されています

デスクトップLinuxで同じことを試してみると、/ etc/resolv.confへの変更は、再起動せずに実行中のプロセスによってすぐに使用されます。

/etc/resolv.confが変更されているときに、バックグラウンドで何が起こっているか(または起こっていないか)を確認するにはどうすればよいですか?埋め込まれたターゲットでどのサービスが欠落している可能性がありますか?アプリケーションの再起動後に機能するのはなぜですか?

1
Joerg

resolveエントリの前にdns/etc/nsswitch.confに追加してみてください。そうすると、hosts行は次のようになります。

hosts:          files mymachines resolve [!UNAVAIL=return] dns myhostname
0
Alexander