ANSI C(Linux)でプログラムによってホストのローカルドメインサフィックスを取得しようとしています。例:私のマシンはironside.0ffnet.netですが、「0ffnet.net」を取得したいと思います。
getnameinfo()とgetaddrinfo()を使用してこれに対処する投稿をいくつか見てきましたが、これらの関数は、マシンにローカルなインターフェイスアドレスの/ etc/hostsファイルから情報を取得しているようです。
マシンにDHCP経由でアドレス(および対応するドメインサフィックス)が割り当てられている場合、/ etc / hostsファイルは更新されず、代わりにこの情報が/etc/resolv.confに保存されます。例:
dfex@ironside:~/hush$cat /etc/resolv.conf
domain 0ffnet.net
search 0ffnet.net
nameserver 139.130.4.4
その結果、getnameinfo()とgetaddrinfo()はどちらも、次のような/ etc / hosts情報を使用して、サフィックスなしでマシンのホスト名を返すだけです。
dfex@ironside:~/hush$ cat /etc/hosts
::1 ironside localhost6.localdomain6 localhost6
127.0.1.1 ironside
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
system()呼び出しに頼らずにこの情報をプルする関数を知っている人はいますか?私はBeejのガイドをくまなく調べてきましたが、あまり成功していません。