truncate(2) System Calls Manual truncate(2) NOM truncate, ftruncate - Tronquer un fichier a une longueur donnee BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int truncate(const char *path, off_t length); int ftruncate(int fd, off_t length); Exigences de macros de test de fonctionnalites pour la glibc (consulter feature_test_macros(7)) : truncate() : _XOPEN_SOURCE >= 500 || /* Depuis la glibc 2.12 : */ _POSIX_C_SOURCE >= 200809L || /* glibc <= 2.19 : */ _BSD_SOURCE ftruncate() : _XOPEN_SOURCE >= 500 || /* Depuis la glibc 2.3.5 : */ _POSIX_C_SOURCE >= 200112L || /* glibc <= 2.19 : */ _BSD_SOURCE DESCRIPTION Les appels truncate() et ftruncate() tronquent le fichier ordinaire reference par path ou par le descripteur fd a une longueur d'exactement length octets. Si le fichier etait plus long, les donnees supplementaires sont perdues. Si le fichier etait plus court, il est etendu, et la portion supplementaire est remplie avec des octets NULL (<< \0 >>). Le pointeur de position n'est pas modifie. Si la taille est modifiee, les champs st_ctime et st_mtime du fichier (respectivement heure de derniere modification d'etat et heure de derniere modification ; consultez inode(7)) sont mis a jour, et les bits Set-UID et Set-GID peuvent etre effaces. Avec ftruncate(), le fichier doit etre ouvert en ecriture ; avec truncate(), il doit etre accessible en ecriture. VALEUR RENVOYEE En cas de succes, zero est renvoye. En cas d'erreur, -1 est renvoye et errno est definie pour preciser l'erreur. ERREURS Pour truncate() : EACCES Le fichier n'est pas accessible en ecriture ou un element du chemin d'acces ne permet pas le parcours. (Consultez aussi path_resolution(7).) EFAULT L'argument Path pointe en dehors de l'espace d'adressage alloue au processus. EFBIG L'argument length depasse la taille maximale d'un fichier (XSI). EINTR Alors qu'il etait bloque en attente de fin, l'appel a ete interrompu par un gestionnaire de signal ; consultez fcntl(2) et signal(7). EINVAL L'argument length est negatif ou plus grand que la taille maximale d'un fichier. EIO Une erreur d'entree-sortie s'est produite lors de la mise a jour de l'inode. EISDIR Le fichier est en realite un repertoire. ELOOP Trop de liens symboliques ont ete rencontres en parcourant le chemin. ENAMETOOLONG Un composant du chemin depasse 255 caracteres ou le chemin complet depasse 1023 caracteres. ENOENT Le fichier indique n'existe pas. ENOTDIR Un element du chemin d'acces n'est pas un repertoire. EPERM Le systeme de fichiers ne permet pas d'agrandir un fichier au-dela de sa taille actuelle. EPERM La lecture a ete interrompue par un signal ; consultez fnctl(2). EROFS Le fichier indique reside sur un systeme de fichiers en lecture seule. ETXTBSY Le fichier est un fichier executable actuellement en cours d'execution. Pour ftruncate(), les memes erreurs sont possibles, sauf qu'au lieu des problemes avec path, on peut en avoir avec le descripteur de fichier fd : EBADF fd n'est pas un descripteur de fichier valable. EBADF ou EINVAL fd n'est pas ouvert en ecriture. EINVAL fd n'est pas un descripteur de fichier ordinaire ni un objet de memoire partage POSIX. EINVAL ou EBADF Le descripteur de fichier fd n'est pas ouvert en ecriture. POSIX permet l'une ou l'autre erreur dans ce cas, et les applications portables devraient les gerer. (Linux produit EINVAL.) VERSIONS Les details dans la section DESCRIPTION sont ceux de systemes compatibles XSI. Pour les systemes non compatibles, la norme POSIX autorise deux comportements pour ftruncate() quand length depasse la longueur du fichier (notez que truncate() n'est pas du tout specifie dans un tel environnement) : soit renvoyer une erreur, soit etendre le fichier. Linux, comme la plupart des implementations d'UNIX, suit les exigences de XSI sur les systemes de fichiers natifs. Cependant, certains systemes de fichiers non natifs ne permettent pas l'utilisation de truncate() et ftruncate() pour etendre un fichier au-dela de sa taille actuelle : un exemple notable sous Linux est VFAT. Sur certaines architectures 32 bits, la signature d'appel de ces appels systeme est differente, pour les raisons expliquees dans syscall(2). STANDARDS POSIX.1-2008. HISTORIQUE POSIX.1-2001, 4.4BSD, SVr4 (ces appels systeme sont apparus dans 4.2BSD). Les appels systeme truncate() et ftruncate() originaux de Linux n'ont pas ete concus pour gerer les positions dans des gros fichiers. En consequence, Linux 2.4 a ajoute les appels systeme truncate64() et ftruncate64() qui permettent de gerer de gros fichiers. Cependant, ces details peuvent etre ignores par les applications qui utilisent la glibc, dont les fonctions d'enveloppe emploient de maniere transparente les appels systeme les plus recents disponibles. NOTES ftruncate() peut aussi etre utilise pour regler la taille d'un objet de memoire partage POSIX ; consultez shm_open(3). BOGUES Un bogue dans les en-tetes de la glibc 2.12 fait que la valeur minimale de _POSIX_C_SOURCE requise pour exposer la declaration ftruncate() etait 200809L au lieu de 200112L. Ce bogue a ete corrige dans les versions ulterieures de la glibc. VOIR AUSSI truncate(1), open(2), stat(2), path_resolution(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 truncate(2)