Devices

mmap /dev/隨機

  • May 8, 2015

為什麼我不能 mmap/dev/random/dev/urandom在 Linux 上?

我得到 errno 19 這是ENODEV.

當我嘗試使用相同的程式碼時,/dev/zero它可以工作。

int fd = 打開(路徑,O_RDONLY);
斷言(fd > 0);

無效*隨機= mmap(NULL,大小,PROT_READ,MAP_PRIVATE | MAP_FILE,fd,0);
錯誤錯誤=錯誤號;

斷言(隨機!= MAP_FAILED);

你不能mmap() /dev/random/dev/urandomseek()在這件事上,你也不能。作為一般規則,你不能mmap()做不受歡迎的事情。管道是您無法找到的另一個範例,mmap()因為它們不可搜尋。

/dev/random並且/dev/urandom基本上是基於流的順序訪問設備。當您閱讀它們時,它們會按需生成字節。隨機訪問這些設備沒有任何意義。mmap()意味著隨機訪問。

引用自:https://unix.stackexchange.com/questions/202250