3

特定のインターフェイスに静的アドレスがあるか、またはdhcpによって提供されるアドレスがあるかをプログラム (C) で知るにはどうすればよいですか? 私は見ることができます/var/db/dhclient.leases.<interface_name>。より良い/よりクリーンな方法はありますか? ioctl私が使用できるものはありますか?

4

3 に答える 3

2

読んでください/etc/rc.conf。で始まる行を探し、どの行ifconfigにテキストが含まれているかを確認しますDHCP

dhclientこれは、手動で実行して再構成されたインターフェースをキャッチしません。リース ファイルの解析は、そのパーミッションによってプログラムがそれを読み取ることができると仮定すると、その点でうまく機能します。

于 2012-02-29T18:27:20.070 に答える
2

簡単に言えば、いいえ、ありません。dhcp クライアントは、ifconfig が使用するのと同じメカニズムを使用してインターフェース アドレスなどを設定します。インターフェイスが動的に構成されたことを示す特別なフラグやその他の表示はありません。

リースではなく /etc/ の構成ファイルを確認しますが、そうです、情報を見つけるには何かハックする必要があります。

于 2012-02-28T23:16:53.633 に答える
0

ローランドとペリーの鋭いアドバイスに加えて、私はこれを追加します:rc.confがdhcpを使用するように構成されていない場合、それはコマンドラインから呼び出されなかったことを意味しません。

実行されていることがわかった場合は、インターフェイスがそのアドレスを取得している可能性があります。

pgrep dhclient 
于 2012-03-02T20:56:50.123 に答える