Provided by: manpages-fr-dev_3.65d1p1-1_all bug

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);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consultez
   feature_test_macros(7)) :

       truncate() :
           _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
           || /* Depuis la glibc 2.12 : */ _POSIX_C_SOURCE >= 200809L

       ftruncate() :
           _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
           || /* Depuis la glibc 2.3.5 : */ _POSIX_C_SOURCE >= 200112L

DESCRIPTION

       Les appels truncate() et ftruncate() tronquent le fichier ordinaire référencé par path  ou
       par le descripteur fd à une longueur d'exactement 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 caractères  nuls
       (« \0 »).

       Le pointeur de position n'est pas modifié.

       Si  la  taille  est  modifiée,  les champs st_ctime et st_mtime du fichier (respectivement
       heure de dernière modification d'état et de  dernière  modification ;  consultez  stat(2))
       sont mis à jour, et les bits Set-UID et Set-GID peuvent être effacés.

       Avec  ftruncate(), le fichier doit être ouvert en écriture ; avec truncate(), il doit être
       accessible en écriture.

VALEUR RENVOYÉE

       S'il réussit, cet appel système renvoie 0. S'il échoue, il renvoie -1 et remplit errno  en
       conséquence.

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. (Consultez aussi path_resolution(7).)

       EFAULT Path pointe en dehors de l'espace d'adressage accessible.

       EFBIG  L'argument length dépasse la taille maximum d'un fichier.

       EINTR  Alors qu'il était bloqué en attente  de  fin,  l'appel  a  été  interrompu  par  un
              gestionnaire de signal ; consultez fcntl(2) et signal(7).

       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  Trop de liens symboliques ont été rencontrés en parcourant le chemin.

       ENAMETOOLONG
              Un  composant  du  chemin  dépasse 255 caractères ou le chemin complet dépasse 1023
              caractères.

       ENOENT Le fichier indiqué n'existe pas.

       ENOTDIR
              Un élément du chemin d'accès n'est pas un répertoire.

       EPERM  Le système de fichiers ne permet pas d'agrandir un fichier  au-delà  de  sa  taille
              actuelle.

       EROFS  Le fichier indiqué réside 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 le descripteur de fichier fd :

       EBADF  fd n'est pas un descripteur valable.

       EBADF ou EINVAL
              fd n'est pas ouvert en écriture.

       EINVAL fd n'est pas un descripteur de fichier ordinaire.

CONFORMITÉ

       BSD 4.4, SVr4, POSIX.1-2001 (ces appels système sont apparus dans BSD 4.2).

NOTES

       Les détails dans la section DESCRIPTION sont ceux de systèmes compatibles  XSI.  Pour  les
       systèmes  non  compatibles,  la  norme  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.
       Linux, comme la plupart des UNIX, suit le comportement XSI sur les  systèmes  de  fichiers
       natifs.   Cependant,   certains   systèmes  de  fichiers  non  natifs  ne  permettent  pas
       l'utilisation de truncate() et ftruncate() pour étendre un fichier au-delà  de  sa  taille
       actuelle : un exemple notable sous Linux est VFAT.

       Les  appels système truncate() et ftruncate() originaux de Linux n'ont pas été conçus pour
       gérer les positions dans des fichiers de très grosse taille. En conséquence,  Linux 2.4  a
       ajouté  les  appels  système truncate64() et ftruncate64() qui permettent de gérer de gros
       fichiers. Cependant, ces détails peuvent être ignorés par les applications  qui  utilisent
       la  glibc,  car  ses  fonctions encapsulent de manière transparente les appels système les
       plus récents disponibles.

       Sur certaines architectures 32 bits, la  signature  d'appel  de  ces  appels  système  est
       différente, pour les raisons expliquées dans syscall(2).

BOGUES

       Un bogue dans les en‐têtes de la glibc 2.12 fait que la valeur minimale de _POSIX_C_SOURCE
       requise pour exposer la déclaration ftruncate() était 200809L au lieu de 200112L. Ce bogue
       a été corrigé dans les versions ultérieures de la glibc.

VOIR AUSSI

       open(2), stat(2), path_resolution(7)

COLOPHON

       Cette  page  fait partie de la publication 3.65 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du  projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe    Blaess    <http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>  ou  par  un  rapport  de  bogue   sur   le   paquet
       manpages-fr.

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».