Mam duży bufor:uzyskać zachowanie kopiowanie przy zapisie z widelcem() ING, bez fork()
char *buf = malloc(1000000000); // 1GB
Gdybym rozwidlony nowy proces, miałoby to buf których pamięci współdzielonej z buf rodzicielski, dopóki jeden lub drugi nie napisał do niego. Nawet wtedy, tylko jeden nowy blok 4KiB musiałby zostać przydzielony przez jądro, reszta byłaby nadal udostępniana.
Chciałbym zrobić kopię buf, ale zmienię tylko trochę kopii. Chciałbym zachować zachowanie kopiowania przy zapisie bez rozwidlania. (Jak za darmo podczas rozwidlenia.)
Czy to możliwe?
oczywiście, ale nie będzie "za darmo" - będziesz musiał zarządzać pamięcią i śledzić zmiany. –
Tak, chcę "za darmo". Zastanawiałem się, czy były jakieś rozwiązania oparte na mmap, a może coś, czego nawet nie wyobrażałem sobie. – fadedbee
Być może mmap z MAP_ANONYMOUS i MAP_PRIVATE wykona zadanie? – fadedbee