タイトルが示すように、IIはファイルIOをファイルから既存のデバイスにマッピングする方法を教えてください。
私はLinuxを実行している一般的なSoCシングルボードコンピュータの1つで高度なプログラミング言語を使用しています。言語には、シリアルポートにアクセスしてTXを送信し、RXデータを受信するライブラリがあります。ライブラリは読み取りと書き込みのために/ dev / ttyAMA0にアクセスしますが、残念ながらSerialオブジェクトを作成するときに排他アクセスとして/ dev / ttyAMA0を開き、他のプロセスがSerialオブジェクトへのアクセスを拒否するようにします。例では /dev/ を使用します。 ttyAMA0。
私の場合は、2つの別々のプログラムを作成したいと思います。あるプログラムはシリアルポートTXに書き込み、もう一方のプログラムはシリアルポートRXから読み込みます。ただし、ライブラリは排他アクセスで/ dev / ttyAMA0を開くため、これを許可しません。私の考えでは、Linuxを使用すると、疑似端末と同じ役割を果たし、読み取りまたは書き込み操作を実行し、すべてのIOアクセスを/ dev / ttyAMA0にマップする2番目または3番目のファイルを作成することが可能であると思います。
だから私の質問は、/dev/ttyAMA0などのデバイスにすべての読み取りと書き込みをマップするファイル(またはpseudo-tty)をLinuxでどのように生成しますか?
答え1
デバイスノードを想定すると、/dev/ttyAMA0
同じデバイスにマッピングされる同じ州/マイナー番号を持つ別のノードを作成できます。
たとえば、これを行うには、/dev/zero
メジャー番号とマイナー番号を見つけます。
carbon# ls -l /dev/zero
crw-rw-rw- 1 root root 1, 5 May 29 02:16 /dev/zero
メジャーデバイス番号は1、マイナーデバイス番号は5、デバイスは文字1です。
同じパラメータ(ルートなど)を使用して別のデバイスノードを作成します。
mknod /dev/zero-dup c 1 5
これ/dev/zero-dup
で使用できます/dev/zero
。