Holen Sie sich das Copy-on-Write-Verhalten von fork () ing, without fork ()

Ich habe einen großen Puffer:

char *buf = malloc(1000000000); // 1GB

Wenn ich einen neuen Prozess auslöste, würde er einen Buf haben, der den Speicher mit dem Buf des Elternteils teilt, bis der eine oder andere darauf schreibt. Selbst dann müsste nur ein neuer 4-KB-Block vom Kernel zugewiesen werden, der Rest würde weiterhin gemeinsam genutzt.

Ich würde gerne eine Kopie von buf machen, aber ich werde nur ein wenig an der Kopie ändern. Ich möchte das Verhalten beim Kopieren beim Schreiben ohne Gabeln. (Wie Sie kostenlos beim Gabeln bekommen.)

Ist das möglich?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage