/dev/random
なぜmmapができないのか、/dev/urandom
Linuxでできないのですか?
私は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/urandom
。seek()
あなたもこの問題にはできません。一般的に言えば、mmap()
追求しないことはできません。パイプはmmap()
検索できないため、見つからないものの別の例です。
/dev/random
基本的には/dev/urandom
ストリームベースのシーケンシャルアクセスデバイスです。これを読み取ると、要求時にバイトが生成されます。これらのデバイスへのランダムアクセスは意味がありません。mmap()
ランダムアクセスを意味します。