mmap /dev/random

mmap /dev/random

/dev/randomなぜmmapができないのか、/dev/urandomLinuxでできないのですか?

私はerrno 19を得ますENODEV

同じコードで試してみるとうまく/dev/zeroいきます。

    int fd = open(パス、O_RDONLY);
    主張(fd> 0);

    無効*ランダム= mmap(NULL、サイズ、PROT_READ、MAP_PRIVATE | MAP_FILE、fd、0);
    int err =エラー番号。

    主張(ランダム!= MAP_FAILED);

答え1

あなたはできませんmmap() /dev/randomまたは/dev/urandomseek()あなたもこの問題にはできません。一般的に言えば、mmap()追求しないことはできません。パイプはmmap()検索できないため、見つからないものの別の例です。

/dev/random基本的には/dev/urandomストリームベースのシーケンシャルアクセスデバイスです。これを読み取ると、要求時にバイトが生成されます。これらのデバイスへのランダムアクセスは意味がありません。mmap()ランダムアクセスを意味します。

関連情報