В чем преимущество: shm_open
следует за mmap
?
Почему бы не создать обычный файл, а затем передать этот fd
в mmap
?
Я не вижу преимущества shm_open
— это просто ссылки, они не?
Я читал человека всей семьи. Мне кажется, что секрет в действии mmaping - тип файла кажется бессмысленным.
Любые указатели будут хороши, особенно с учетом производительности.
Мой контекст представляет собой (циклически перезаписываемый) буфер (скажем, 128 МБ), который будет постоянно записываться одним процессом и постоянно выгружаться другим.
В качестве примера: что не так с этим подходом open/mmap.
ИЗМЕНИТЬ
Если быть точным, то одно из следующего лучше другого:
fd = open("/dev/shm/myshm.file", O_CREAT|O_RDWR, S_IRUSR | S_IWUSR);
mem = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
vs.
fd = shm_open("/myshm.file", O_RDWR|O_CREATE, S_IRUSR | S_IWUSR);
mem = mmap(...same as before...);
Когда я создал файл с обычным open
под /dev/shm
фс и свалил в него Гиг мусора, моя доступная память уменьшилась на 1Г, а доступное место на диске осталось прежним.
В чем разница между двумя способами ?