TRUNCATE
Section : Manuel du programmeur Linux (
2)
Mise à jour de la version anglaise : 4 juillet 2008
Index
Menu principal
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 (voir
feature_test_macros(7)) :
getdtablesize() :
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
DESCRIPTION
Les appels
truncate()
et
ftruncate()
tronquent le fichier 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 d'octets nuls.
Le pointeur de position n'est pas modifié.
Si la taille est modifiée, les champs st_ctime et st_mtime
(respectivement horodatage du dernier changement d'état
et horodatage de la dernière modification ; voir
stat(2))
du fichier 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
Ces appels système renvoient 0 s'ils réussissent et -1 s'ils échouent, auquel cas
errno
contient le code d'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.
(Voir 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
-
Un signal a été capturé durant l'exécution.
- 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'inœud.
- EINTR
-
Alors qu'il était bloqué en attente de fin,
l'appel a été interrompu par un gestionnaire de signal ; voir
fcntl(2)
et
signal(7).
- EISDIR
-
Le fichier est en réalité un répertoire.
- ELOOP
-
Le chemin contient une référence circulaire
(à travers un lien symbolique).
- ENAMETOOLONG
-
Un élément 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 sous-jacent ne permet pas l'extension
d'un fichier au-delà de sa taille actuelle.
- EROFS
-
Le fichier indiqué se trouve 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 valide.
- 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
La description ci-dessus est celle des systèmes compatibles XSI.
Pour les systèmes non compatibles, le standard 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.
(La plupart des Unix suivent le comportement XSI).
Comme la plupart des implémentations Unix,
Linux suit les réclamations XSI
lorsqu'il a à faire à des systèmes de fichiers natifs.
Toutefois, certains systèmes de fichiers non natifs
ne permettent pas d'utiliser
truncate()
et
ftruncate()
pour étendre un fichier au-delà de sa taille actuelle :
un exemple notable sous Linux est VFAT.
VOIR AUSSI
open(2),
stat(2),
path_resolution(7)
TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess
<http://www.blaess.fr/christophe/> le 15 octobre 1996
et révisée le 17 juillet 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 2 truncate ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- CONFORMITÉ
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 17 juillet 2008