/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()
랜덤 액세스를 의미합니다.