ioctl
Wireless ExtensionでWi-Fiの情報の取得・設定は、おおむねioctl(2)を使います。実際にどういうデータが取得できるかは、iwconfigコマンドで見られます。
後はlinux/wireless.hを見ながら、どういうデータをioctl(2)に渡せばいいのかを調べてみれば、ほとんどのWireless Extensionの機能は使いこなせるのではないかと思います。
$ iwconfig wlan0 wlan0 IEEE 802.11abgn ESSID:"hogefuga" Mode:Managed Frequency:2.452 GHz Access Point: 00:11:22:33:44:55 Bit Rate=54 Mb/s Tx-Power=15 dBm Retry min limit:7 RTS thr:off Fragment thr=2352 B Power Management:off Link Quality=100/100 Signal level:-30 dBm Noise level=-92 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
event
Wi-Fiの状態が変わった瞬間にその変化を通知してくれるのが、このイベントです。実態は何かWi-Fiの状態に変化があった時に、OSからrtnetlink(7)を使って何が変化したのかを受け取るというようになっています。
イベントを使ってWi-Fiの状態変化の通知を受け取る様子を簡単に見る為には、そのものズバリのiweventコマンドを使うと分かりやすいと思います。
iwlib
で。生のioctlやrtnetlinkを触ってプログラムを書くのもそんなに苦ではないのですが、ひたすら構造体を埋める手続きは、似たようなコードの連続になりがちです。なので、少しだけ開発を楽にしてくれるような薄いラッパーライブラリがWireless Toolsには付属しています。それがiwlibです。Wi-Fiの情報の取得だけといった大味な使い方だけでよければ、iwlibを使うというのも一つの手です。