Что вы подразумеваете под «редактором программного обеспечения»? Если это текстовый файл, пробовали ли вы уже существующие редакторы производственного качества, прежде чем писать свои собственные? Если это файл, хранящий двоичные данные, рассматривали ли вы возможность использования СУБД и манипулирования ее содержимым с помощью операторов SQL?
Если вам абсолютно необходимо написать это с нуля, я не уверен, что mmapping - это путь. Преобразование огромного файла создаст большую нагрузку на систему виртуальной машины вашего компьютера, и, если во всем файле не будет много операций редактирования, его эффективность может отставать от простой схемы чтения / записи. Хуже того, как вы говорите, у вас есть проблемы, когда вы хотите расширить файл.
Вместо этого поддерживайте окна буфера для данных файла, которые пользователь может изменять. Когда пользователь решает сохранить файл, проследуйте последовательно файл и отредактированные буферы, чтобы создать новое изображение файла. Если у вас есть место на диске, проще написать новый файл (особенно, если размер буфера изменился), в противном случае вам нужно быть умным в том, как вы опережаете существующие данные, прежде чем перезаписывать их новым содержимым.
Кроме того, вы можете вести журнал операций редактирования. Когда пользователь решает сохранить файл, выполните топологическую сортировку журнала и воспроизведите его на существующем файле, чтобы создать новый.
Для монопольного доступа к файлам используйте блокировку файлов вашей операционной системы или реализуйте блокировку на уровне приложения (если только ваш редактор будет касаться этих файлов). В зависимости от mmap для монопольного доступа ограничиваются ваши варианты реализации.