
現在、さまざまなセンサーのデータ可視化システムの構築に取り組んでいます。
Linuxアプリケーションの開発を可能にするには、デバイスドライバとハードウェア設計がまだ完了していないため、さまざまな文字デバイスの動作をシミュレートする必要があります。
もしそうなら、特定のファイル(たとえば、ユーザースペースでも実行されているCプログラム)へのシステムコールを受け取る方法はありますか?
read()
(Userspace Application/Database) <========= (~/mydev) <===== (dummy_driver)
答え1
使用できるクサイ ユーザー空間の文字デバイスこれはヒューズライブラリはほとんどのシステムでパッケージ化されています。 「ドライバ」の例は次のとおりです。kus.c。この例をコンパイルして実行すると、次のようになります。
sudo ./cuse -f --name=mydevice
/dev/mydevice
すべてのオープン、クローズ、読み取り、書き込み、ioctl呼び出しを生成して受信します。ヒューズの用語でデバイスを「削除」するには、プロセスを終了します。
まだサンプルがデプロイされていない可能性があるため、コンパイル、ダウンロード(またはgit clone)圧縮、ディレクトリに切り替え、libfuse/example
Cファイルに示すようにコンパイルします。
gcc -Wall cuse.c $(pkg-config fuse --cflags --libs) -o cuse -I.
fuse-devel
これを行うには、パッケージまたは同様のパッケージをインストールする必要があります。さらにioctlを実装する必要がある場合は、次の点を確認してください。協会与えられた回答に対するコメントとしてこの一つスタック交換質問。
考慮すべきより簡単な選択肢はpseudo-ttyです。フーティまたはターミナル0ターミナル2つのシリアルポートを一緒に接続するカーネルモジュールです。