TRUNCATE

Section: Manuel du programmeur Linux (2)
Updated: 18 juillet 2003
Index


NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
NOTES
VOIR AUSSI
TRADUCTION

NOM

truncate, ftruncate - Tronquer un fichier à une longueur donnée.

SYNOPSIS

#include <unistd.h>
#include <sys/types.h>
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);

DESCRIPTION

Les appels truncate et ftruncate tronquent le fichier référencé par path ou par le descripteur fd à une longueur maximale de length octets.
Si le fichier était plus long, les données supplémentaires sont perdues. Si le fichier était plus court, il est étendu, et la portion supplémentaire est remplie de zéros.
Le pointeur de position n'est pas modifié.
Si la taille est modifiée, les champs ctime et mtime du fichier sont mis à jour, et les bits Set-UID et Set-GID sont effacés.
Avec ftruncate, le fichier doit être ouvert en écriture ; avec il doit être accessible en écriture.

VALEUR RENVOYÉE

truncate, et ftruncate renvoient 0 s'ils réussissent et -1 s'ils échouent, auquel cas errno contient le code d'erreur.

ERREURS

Pour truncate:
EACCES
Le fichier n'est pas accessible en écriture, ou un élément du chemin d'accès ne permet pas le parcours.
EFAULT
Path pointe en dehors de l'espace d'adressage accessible.
EFBIG
L'argument length dépasse la taille maximum d'un fichier.
EINTR
Un signal a été capturé durant l'exécution.
EINVAL
L'argument length est négatif ou plus grand que la taille maximale d'un fichier.
EIO
Une erreur d'entrée/sortie bas niveau s'est produite.
EISDIR
Le fichier est en réalité un répertoire
ELOOP
Le chemin contient une référence circulaire (à travers un lien symbolique)
ENAMETOOLONG
Un composant du chemin dépasse 255 caractères ou le chemin complet dépasse 1023 caractères.
ENOENT
Le fichier n'existe pas
ENOTDIR
un composant du chemin d'accès n'est pas un répertoire
EROFS
Le fichier se trouve sur un système de fichiers en lecture seule.
ETXTBSY
Le fichier est un programme actuellement en cours d'exécution.

Pour ftruncate les mêmes erreurs sont possibles, sauf qu'au lieu des problèmes avec path, on peut en avoir avec fd :
EBADF
L'argument fd n'est pas un descripteur valide.
EBADF ou EINVAL
L'argument fd n'est pas ouvert en écriture.
EINVAL
L'argument fd n'est pas un descripteur de fichier normal.

CONFORMITÉ

BSD 4.4, SVr4 (cette fonction est apparue dans BSD 4.2). POSIX 1003.1-1996 décrit ftruncate. POSIX 1003.1-2001 décrit aussi truncate, en tant qu'extension XSI.
SVr4 mentionne des conditions d'erreurs supplémentaires pour truncate EMFILE, EMULTIHOP, ENFILE, ENOLINK. La version SVr4 de ftruncate dispose de l'erreur supplémentaire EAGAIN.

NOTES

La description ci-dessus est celle des systèmes compatibles XSI. Pour les systèmes non compatiables,le standard POSIX autorise deux comportements pour ftruncate quand length dépasse la longueur du fichier (notez que truncate n'est pas du tout spécifié dans un tel environnement) : soit renvoyer une erreur, soit étendre le fichier. (La plupart des Unix suivent le comportement XSI).

VOIR AUSSI

open(2)

TRADUCTION

Christophe Blaess, 1996-2003.