Какво е предимството да направите: shm_open
последва mmap
?
Защо не създадете обикновен файл и след това да прехвърлите това fd
към mmap
?
Не виждам предимството на shm_open
- това са само препратки, са те не?
Чела съм мъжа на цялото семейство. Струва ми се, че тайната е в действието mmaping - типът файл изглежда безсмислен.
Всички указатели ще са добри, особено с отчет за производителност.
Моят контекст е (цикличен презаписваем) буфер (да речем 128MB), който постоянно ще се записва като един процес и постоянно ще се изхвърля от друг.
Като пример: какво не е наред с този 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
fs и изхвърлих Gig боклук в него, наличната ми памет намаля с 1G, а наличното ми дисково пространство остана същото.
Каква е разликата между двата метода ?