Получите поведение копирования при записи для fork() без использования fork()

У меня есть большой буфер:

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

Если бы я разветвил новый процесс, у него был бы буфер, который разделял бы память с буфером родителя, пока один или другой не написал бы в него. Даже в этом случае ядру потребуется выделить только один новый блок размером 4 КБ, остальные останутся общими.

Я хотел бы сделать копию buf, но только немного изменю копию. Я бы хотел, чтобы поведение копирования при записи не разветвлялось. (Как вы получаете бесплатно при разветвлении.)

Возможно ли это?

8
задан fadedbee 12 June 2012 в 14:38
поделиться