NOMBRE¶
truncate, ftruncate - trunca un fichero a una longitud especificada
SINOPSIS¶
#include <unistd.h>
#include <sys/types.h>
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
DESCRIPCIÓN¶
Las funciones
truncate y
ftruncate hacen que el fichero regular
cuyo nombre es
path o que es referenciado por
fd sea truncado a
un tamaño de
length bytes.
Si el fichero era previamente más grande que este tamaño, los datos
extra se pierden. Si el fichero era previamente más pequeño, es
extendido, y la zona ampliada es rellenada con bytes cero.
El puntero del fichero no se modifica.
Si el tamaño cambia, los campos ctime y mtime del fichero son actualizados,
y los bits de modo suid y sgid pueden ser limpiados.
Con
ftruncate, el fichero debe estar abierto para escritura; con
truncate, el fichero debe ser escribible.
VALOR DEVUELTO¶
En caso de éxito, se devuelve cero. En caso de error, se devuelve -1 y se
establece el
errno apropiado.
ERRORES¶
Para
truncate:
- EACCES
- Se deniega el permiso de búsqueda para un componente
del prefijo de la ruta, o el fichero nombrado no puede ser escrito por el
usuario.
- EFAULT
- Path apunta fuera del espacio de direcciones
asignado al proceso.
- EFBIG
- El argumento length es mayor que el tamaño
máximo de fichero. (XSI)
- EINTR
- Se capturó una señal durante la
ejecución.
- EINVAL
- El argumento length es negativo o mayor que el
tamaño máximo de fichero.
- EIO
- Ocurrió un error de E/S mientras se actualizaba el
nodo-i.
- EISDIR
- El fichero nombrado es un directorio.
- ELOOP
- Demasiados enlaces simbólicos en la traducción
del nombre de ruta.
- ENAMETOOLONG
- Un componente de la ruta excede los 255 caracteres, o la
ruta completa excede los 1023 caracteres.
- ENOENT
- El fichero no existe.
- EROFS
- El fichero reside en un sistema de ficheros de sólo
lectura.
- ETXTBSY
- El fichero es un fichero de procedimientos puros
(código compartido) que se está ejecutando.
Para
ftruncate se aplican los mismos errores, pero en lugar de tratar con
path, los errores pueden ocurrir ahora con
fd:
- EBADF
- fd no es un descriptor válido.
- EBADF o EINVAL
- fd no está abierto para escritura.
- EINVAL
- fd no hace referencia a un fichero regular.
4.4BSD, SVr4 (estas funciones aparecieron por primera vez en BSD 4.2). POSIX
1003.1-1996 posee
ftruncate. POSIX 1003.1-2001 posee también
truncate, como una extensión de XSI.
SVr4 documenta para
truncate las condiciones de error adicionales EMFILE,
EMULTIHP, ENFILE, ENOLINK. SVr4 documenta para
ftruncate una
condición de error adicional EAGAIN.
OBSERVACIONES¶
La descripción de arriba es para sistemas conformes con XSI. Para sistemas
no conformes con XSI, el estándar POSIX permite dos comportamientos para
ftruncate cuando
length excede la longitud del fichero (observe
que
truncate no está especificada en absoluto en tales
condiciones): bien devolver un error o extender el fichero. (La mayoría
de sistemas UNIX siguen el requisito de XSI.)
VÉASE TAMBIÉN¶
open(2)