一般的な質問をしてから具体的な例を挙げました。私は両方に取り組もうとします。
ドライバをロードすると、ドライバとの通信方法は、このドライバで定義されている方法で行われます。通常、これはドライバ用に作成された/dev
デバイスを介して行われます。それが事実なら、それはそれと通信する唯一の方法です。
これは普遍的ではありません。多くのドライバには、/sys
sysfs擬似ファイルシステムの下にエントリがあり、そこからいくつかの側面を変更することができます。実際には、ののみが/sys
fsでアクセス可能なクラスの全クラスがあります。 GPIOデバイスと有線デバイスは、/sys/class/gpio
などのパスにアクセスしてオンとオフを切り替えることができます。
もう1つのオプションは、推奨されていませんが、時には使用されることがありますが、/proc
疑似ファイルシステムを使用することです。ここでも、通信方法を定義するのはドライバーの責任です。ユーザーは、ドライバが定義したプロトコルに従わなければなりません。
また、一部のドライバにはファイルシステムの存在が全くありません。最も明白な標準的な例は、ネットワークインターフェイスです。それらと通信する唯一の方法は、ネットワーキングシステムコールによるものです。
あなたが提供した特定の例では、/dev/video0
と表示されるビデオカメラについて話しました。このようなカメラは、通常、Video4Linux(またはv4l)カメラであり、それらはキャラクタデバイスを介してアクセスされます。
このように、カメラと通信するためのプロトコルには、人生を楽にするラッパーがあるかもしれません。実際のデバイスを開く場合は、それと複雑なハンドシェイクを実装する必要があります。代わりに、v4lライブラリーを使用してアクセスの詳細をラップすることができます。
間違いをしないでください。あなたはまだ/dev
のキャラクターデバイスと話しています。それは、それがあなたのコードではなく、図書館のものであるということだけです。
デバイスクラスによって異なります。 –
ほとんどの実用的な目的の答えは「はい」です。 –
ほとんどのウェブカメラドライバは、[Video4Linux API](https://linuxtv.org/downloads/v4l-dvb-apis/uapi/v4l/open.html)と互換性があります。デバイスドライバ( 'tty'、ディスクなど) – myaut