Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

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

VERSIONS

       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.

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

STANDARDS

       POSIX.1-2008.

HISTORIQUE

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

       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.

NOTES

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

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)

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⟩.