スクリプトから /dev/random に似たデバイスを作成します。

スクリプトから /dev/random に似たデバイスを作成します。

私は特定の形式のテストデータを生成するスクリプトを生成するプログラムを書いています。

  1. /dev/myprogram同様に機能するデバイスをどのように作成できますか(例::/dev/randomサブディレクトリにあることをお勧めします)。/dev//dev/test/myprogram
  2. そのようなデバイスにスクリプトを添付できますか?それとも、Cプログラムを書くためにいくつかの(どれですか)低レベルAPIを使用する必要がありますか?
  3. 一度に1バイトを返す必要がありますか、常に指定されたバイト数(1より大きい)を返すようにデバイスを設定できますか?

私はUbuntu 14.04を使用していますが、すべての* nixシステムで動作する一般的な答えを探しています。

ベストアンサー1

カーネルの助けを借りずに(自分のカーネルドライバモジュールを作成して)デバイスを作成することは事実上不可能です。 FUSEがあり、ユーザースペースの文字デバイスについてはよく知られておらず、普遍的にサポートされていないCUSEとブロックで使用できるNBDがあります。デバイス。

類似性が十分であれば、名前付きパイプを使用してmkfifoから、一部のプロセスがそのデバイスに「ランダム」データを書き込むようにして、他のプロセスがそのデバイスから同じデータを再読み込みできるようにすることができます。このような名前付きパイプで置き換えることができ/dev/random、ほとんどのプログラムは「任意の」データを喜んで読み取ることになります。実際には、実際に任意のデバイスと通信していることを確認することについて考えるプログラムはほとんどないからです。/dev/urandom(ランダムioctlがより広く使用されるまで)

# mkfifo /dev/foobar
# while true; do dd if=/dev/urandom of=/dev/foobar; done &
# hexdump -C -n 16 /dev/foobar
00000000  ec ec 91 4b 9a 62 95 b0  95 7f 44 16 21 8d cd de  |...K.b....D.!...|

おすすめ記事