Devices
mmap /dev/隨機
為什麼我不能 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/urandom
。seek()
在這件事上,你也不能。作為一般規則,你不能mmap()
做不受歡迎的事情。管道是您無法找到的另一個範例,mmap()
因為它們不可搜尋。
/dev/random
並且/dev/urandom
基本上是基於流的順序訪問設備。當您閱讀它們時,它們會按需生成字節。隨機訪問這些設備沒有任何意義。mmap()
意味著隨機訪問。