lseek64(3) Library Functions Manual lseek64(3)

lseek64 - Positionner la tête de lecture/écriture dans un fichier (version 64 bits)

Bibliothèque C standard (libc, -lc)

#define _LARGEFILE64_SOURCE     /* Consultez feature_test_macros(7) */
#include <sys/types.h>
#include <unistd.h>
off64_t lseek64(int fd, off64_t décalage, int origine_décalage);

Les fonctions de la famille lseek() repositionnent la tête de lecture du fichier ouvert associé au descripteur de fichier fd à décalage octets relativement au début du fichier, à la position actuelle ou à la fin du fichier lorsque origine_décalage a respectivement la valeur SEEK_SET, SEEK_CUR ou SEEK_END.

Pour plus de détails sur les valeurs renvoyées et les erreurs, consultez lseek(2).

Quatre interfaces sont disponibles : lseek(), lseek64(), llseek() et _llseek().

Prototype :


off_t lseek(int fd, off_t offset, int whence);

La fonction enveloppe de la bibliothèque C lseek() utilise le type off_t. C'est un type signé 32 bits pour les architectures 32 bits, à moins que l'on compile avec


#define _FILE_OFFSET_BITS 64

auquel cas c'est un type signé 64 bits.

Prototype :


off64_t lseek64(int fd, off64_t décalage, int origine_décalage);

La fonction de bibliothèque lseek64() utilise un type 64 bits même si off_t est un type 32 bits. Son prototype (et le type off64_t) n'est disponible que lorsqu'on compile avec


#define _LARGEFILE64_SOURCE

La fonction lseek64() est disponible depuis la glibc 2.1.

Prototype :


loff_t llseek(int fd, loff_t décalage, int origine_décalage);

Le type loff_t est un type signé 64 bits. La fonction de bibliothèque llseek() est disponible dans la glibc et fonctionne sans définition particulière. Cependant, les en-têtes de la glibc ne proposent pas de prototype. Les utilisateurs doivent donc ajouter le prototype ci-dessus, ou quelque chose d'équivalent, dans leurs propres sources. Lorsque des utilisateurs se sont plaints à propos de pertes de données à cause d'une mauvaise compilation de e2fsck(8), la glibc 2.1.3 a ajouté un avertissement au moment de l'édition de liens


"la fonction llseek peut être dangereuse ; utilisez lseek64 à la place."

Cela fait que cette fonction est inutilisable si l'on souhaite une compilation vierge de tout avertissement.

Depuis la version 2.28 de la glibc, ce symbole de fonction n'est plus disponible pour les applications nouvellement liées.

Sur les architectures 32 bits, c'est l'appel système qui est utilisé par les fonctions enveloppes de la bibliothèque C pour implémenter toutes les fonctions ci-dessus. Son prototype est :


int _llseek(int fd, off_t décalage_haut, off_t décalage_bas,
            loff_t *résultat, int origine_décalage);

Pour plus de détails, consultez llseek(2).

Les systèmes 64 bits n'ont pas besoin de l'appel système _llseek(). Ils peuvent en effet utiliser l'appel système lseek(2) qui prend en charge les décalages de fichier 64 bits.

Pour une explication des termes utilisés dans cette section, consulter attributes(7).

Interface Attribut Valeur
lseek64() Sécurité des threads MT-Safe

lseek64() est une des fonctions définies dans la spécification LFS (Large File Summit) qui a été achevée en 1996. Cette spécification avait pour but de fournir une prise en charge transitionnelle qui devait permettre aux applications sur des systèmes 32 bits d'accéder aux fichiers dont la taille dépassait la valeur qui pouvait être représentée par le type off_t 32 bits. Comme indiqué plus haut, ce symbole est exposé par les fichiers d'en-têtes si la macro de test de fonctionnalité _LARGEFILE64_SOURCE est elle-même définie. Alternativement, sur un système 32 bits, le symbole lseek devient un alias de lseek64 si la macro _FILE_OFFSET_BITS est définie avec la valeur 64.

llseek(2), lseek(2)

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>, Frédéric Hantrais <fhantrais@gmail.com> et Lucien Gentis <lucien.gentis@waika9.com>

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.

15 décembre 2022 Pages du manuel de Linux 6.02