ioctl は、なにやらデバイスを操作するプログラムを書いたことがあれば目にしたことがあるかも知れませんし、ifconfig のようなデバイス操作をするプログラムのエラーで見覚えがあるかも知れません。 私自身、見よう見まねでいろいろなプログラムを書いて(打ち込んで)いるときに、時々 ioctl に出会っていました。 得たいの知れない定数やら得たいの知れない構造体やらを渡すので、私にとっては不気味な存在でした。 C の関数なら、普通はマニュアルを読めば引数と機能は書いてあるのに、ioctl だけは、使い方だけで中身については一切なしなのです。 ですが、デバイスドライバをつくるようになってから、一気に謎が解けました。 ioctl は read や write とは別系統のドライバとのやり取りの口です。 read, write が基本的には連続したデータのやりとりをするように使用されることが多い