Provided by: manpages-fr-dev_4.13-4_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 (consulter feature_test_macros(7)) :

       truncate() :
           _XOPEN_SOURCE >= 500
               || /* Depuis la glibc 2.12 : */ _POSIX_C_SOURCE >= 200809L
               || /* Glibc versions <= 2.19 : */ _BSD_SOURCE

       ftruncate() :
           _XOPEN_SOURCE >= 500
               || /* Depuis la glibc 2.3.5 : */ _POSIX_C_SOURCE >= 200112L
               || /* Glibc versions <= 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 reçoit une valeur adéquate.

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

Linux                                              6 mars 2019                                       TRUNCATE(2)