Pregunta

En Perl:

Tengo un archivo abierto en modo lectura / escritura, con un bloqueo exclusivo.

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

Si escribo más datos para el archivo de lo que previamente llevó a cabo, el archivo crecerá.
Si escribo menos datos, mis nuevos contenidos están al principio, pero el antiguo contenido siguen ahí al final del archivo.

Esto no es sorprendente, sin embargo no es lo que quiero.

¿Hay una manera simple de reducir el tamaño del archivo mientras se abre en modo lectura / escritura? Básicamente quiero decir que para acabar con el archivo exactamente en esta posición de byte.

Sé que puedo abrirlo de forma diferente, y estoy pensando en hacer eso, pero una solución de una línea estaría bien.

¿Fue útil?

Solución

Otros consejos

En realidad, no sé nada de Perl, pero desde ftruncate(2) sería la función de C, tal vez este ayuda?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top