truncate(2) | System Calls Manual | truncate(2) |
truncate, ftruncate - Tronquer un fichier à une longueur donnée
Bibliothèque C standard (libc, -lc)
#include <unistd.h>
int truncate(const char *path, off_t length); int ftruncate(int fd, off_t length);
truncate() :
_XOPEN_SOURCE >= 500
|| /* Depuis la glibc 2.12 : */ _POSIX_C_SOURCE >= 200809L
|| /* glibc <= 2.19 : */ _BSD_SOURCE
ftruncate() :
_XOPEN_SOURCE >= 500
|| /* Depuis la glibc 2.3.5 : */ _POSIX_C_SOURCE >= 200112L
|| /* glibc <= 2.19 : */ _BSD_SOURCE
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.
En cas de succès, zéro est renvoyé. En cas d'erreur, -1 est renvoyé et errno est définie pour préciser l'erreur.
Pour truncate() :
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 :
POSIX.1-2001, POSIX.1-2008, 4.4BSD, SVr4 (ces appels système sont apparus dans 4.2BSD).
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).
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.
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.
5 février 2023 | Pages du manuel de Linux 6.03 |