man truncate (Appels systèmes) - Tronquer un fichier à une longueur donnée.
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
TRADUCTION
Christophe Blaess, 1996-2003.