Сжатие файла, который открывается в режиме чтения / записи - PullRequest
2 голосов
/ 23 ноября 2010

В perl:

У меня есть файл, открытый для чтения / записи, с эксклюзивной блокировкой.

open( $f, "+< $filename" );<br> flock( $f, LOCK_EX );

Если я запишу в файл больше данных, чем было ранее, файл будет расти.
Если я пишу меньше данных, мое новое содержимое находится в начале, но старое содержимое все еще там в конце файла.

Это не удивительно, но это не то, что я хочу.

Есть ли простой способ уменьшить файл, когда он открыт для чтения / записи? По сути, я хочу сказать, чтобы файл заканчивался именно в этой позиции байта.

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

Ответы [ 2 ]

1 голос
/ 23 ноября 2010

Я на самом деле не знаю о Perl, но, поскольку ftruncate(2) будет функцией C, может быть это поможет?

1 голос
/ 23 ноября 2010
...