zion - truncate
Nom
truncate, ftruncate - Tronquer un fichier à une longueur donnée.
Résumé
#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 .BT truncate , 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.
Poster un commentaire