Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

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

SYNOPSIS

       #include <unistd.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   (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 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 avec des  octets
       NULL (« \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  heure  de  dernière  modification ;  consultez
       inode(7)) 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

       En cas de succès, zéro est renvoyé. En cas d'erreur, -1 est renvoyé et errno  est  définie
       pour préciser l'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. (Consultez aussi path_resolution(7).)

       EFAULT L'argument Path pointe en dehors de l'espace d'adressage alloué au processus.

       EFBIG  L'argument length dépasse la taille maximale d'un fichier (XSI).

       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 s'est produite lors de la mise à jour de l'inode.

       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.

       EPERM  La lecture a été interrompue par un signal ; consultez fnctl(2).

       EROFS  Le fichier indiqué réside sur un système de fichiers en lecture seule.

       ETXTBSY
              Le fichier est un fichier exécutable 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 de fichier valable.

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

       EINVAL fd n'est pas un descripteur de fichier ordinaire ni un  objet  de  mémoire  partagé
              POSIX.

       EINVAL ou EBADF
              Le  descripteur  de  fichier fd n'est pas ouvert en écriture. POSIX permet l'une ou
              l'autre erreur dans ce cas, et les  applications  portables  devraient  les  gérer.
              (Linux produit EINVAL.)

CONFORMITÉ

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

NOTES

       ftruncate()  peut  aussi  être utilisé pour régler la taille d'un objet de mémoire partagé
       POSIX ; consultez shm_open(3).

       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 implémentations d'UNIX, suit les  exigences  de  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 gros fichiers. 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,  dont  les
       fonctions  d'enveloppe  emploient  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

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

COLOPHON

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

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org>,  David  Prévot  <david@tilapin.org>  et  Jean-Pierre  Giraud
       <jean-pierregiraud@neuf.fr>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.