Arquivo encolhido que é aberto em leitura/gravação
-
27-09-2019 - |
Pergunta
Em Perl:
Eu tenho um arquivo aberto em leitura/gravação, com um bloqueio exclusivo.
open( $f, "+< $filename" );
flock( $f, LOCK_EX );
Se eu escrever mais dados para o arquivo do que ele mantido anteriormente, o arquivo aumentará.
Se eu escrever menos dados, meu novo conteúdo está no começo, mas o conteúdo antigo ainda está lá no final do arquivo.
Isso não é surpreendente, no entanto, não é o que eu quero.
Existe uma maneira simples de encolher o arquivo enquanto ele é aberto em leitura/gravação? Basicamente, quero dizer para encerrar o arquivo exatamente nesta posição de bytes.
Sei que posso abri -lo de maneira diferente, e estou pensando em fazer isso, mas uma correção de uma linha seria legal.
Solução
Outras dicas
Na verdade, eu não sei sobre Perl, mas desde ftruncate(2)
seria a função C, talvez isto ajuda?