Linux repositories inspector
Linux
Aliases: ftruncate(2), ftruncate(2), ftruncate(2), ftruncate(2), ftruncate(2), ftruncate(2), ftruncate(2), ftruncate(2), ftruncate(2), ftruncate(2), ftruncate(2), ftruncate(2), ftruncate64(2), ftruncate64(2), ftruncate64(2), truncate64(2), truncate64(2), truncate64(2), truncate64(2), truncate64(2), truncate64(2), truncate64(2), truncate64(2), truncate64(2), truncate64(2)

manpages-fr-dev

French version of the development manual pages

man-pages-fr

French version of the Linux man-pages

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

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.

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 à <>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».
⇧ Top