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.

Foi útil?

Solução

Outras dicas

Na verdade, eu não sei sobre Perl, mas desde ftruncate(2) seria a função C, talvez isto ajuda?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top