truncate

TRUNCATE(2)               Manuel du programmeur Linux              TRUNCATE(2)



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.70 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 Ã
       <perkamon-fr@traduc.org>.

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



Linux                           1er avril 2013                     TRUNCATE(2)