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