Man page - lseek(2)

Packages contains this manual

Available languages:

en fr pl nl ja ru ro de

Manual

lseek

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
Recherche de données et de trous de fichier
VALEUR RENVOYÉE
ERREURS
VERSIONS
STANDARDS
HISTORIQUE
NOTES
VOIR AUSSI
TRADUCTION

NOM

lseek - Positionner la tĂȘte de lecture/Ă©criture dans un fichier

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <unistd.h>

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

DESCRIPTION

lseek () replace la description du fichier ouvert associée au descripteur de fichier fd au paramÚtre offset en suivant la directive whence ainsi :
SEEK_SET

La tĂȘte est placĂ©e Ă  offset octets.

SEEK_CUR

La tĂȘte est placĂ©e Ă  son emplacement actuel plus offset octets.

SEEK_END

La tĂȘte est placĂ©e Ă  la taille du fichier plus offset octets.

lseek () permet de placer la tĂȘte au-delĂ  de la fin du fichier (mais cela ne modifie pas la taille du fichier). Si des donnĂ©es sont Ă©crites Ă  cet emplacement, une lecture ultĂ©rieure de l’espace intermĂ©diaire (un « trou ») retournera des octets NULL (« \0 ») jusqu’à ce que d’autres donnĂ©es y soient Ă©crites.

Recherche de données et de trous de fichier

Depuis Linux 3.1, Linux prend en charge les valeurs supplémentaires suivantes de whence :
SEEK_DATA

Positionner la tĂȘte sur le prochain (supĂ©rieur ou Ă©gal Ă  offset ) emplacement du fichier contenant des donnĂ©es. Si offset pointe sur des donnĂ©es, la tĂȘte est placĂ©e sur offset .

SEEK_HOLE

Positionner la tĂȘte sur le prochain (supĂ©rieur ou Ă©gal Ă  offset ) trou du fichier. Si offset pointe au milieu d’un trou, la tĂȘte est placĂ©e sur offset . S’il n’y a pas de trou aprĂšs offset , la tĂȘte est positionnĂ©e Ă  la fin du fichier (c’est-Ă -dire qu’il y a un trou implicite Ă  la fin de tous les fichiers).

Dans les deux cas précédents, lseek () échoue si offset pointe aprÚs la fin du fichier.

Ces opĂ©rations permettent aux applications d’établir une projection des trous dans un fichier fractionnĂ©. Cela peut servir aux applications du type outils de sauvegarde, qui peuvent Ă©conomiser de l’espace lors de la crĂ©ation de sauvegardes et conserver les trous, si elles disposent d’un mĂ©canisme permettant de trouver les trous.

Pour ces opĂ©rations, un trou est une suite de zĂ©ros qui n’a (normalement) pas Ă©tĂ© allouĂ©e au stockage sous-jacent du fichier. Cependant, un systĂšme de fichiers n’est pas forcĂ© de signaler les trous, donc ces opĂ©rations ne permettent pas de garantir la projection de l’espace de stockage vraiment allouĂ© Ă  un fichier (de plus, une suite de zĂ©ros vraiment Ă©crite sur le stockage sous-jacent pourrait ne pas ĂȘtre signalĂ©e comme un trou). La plus simple implĂ©mentation de ses opĂ©rations pour un systĂšme de fichiers, serait avec SEEK_HOLE renvoyant toujours la position de fin de fichier, et SEEK_DATA renvoyant toujours offset (c’est-Ă -dire, mĂȘme si offset pointe Ă  l’emplacement d’un trou, la suite de zĂ©ros peut ĂȘtre considĂ©rĂ©e comme des donnĂ©es).

La macro de test de fonctionnalitĂ©s _GNU_SOURCE doit ĂȘtre dĂ©finie pour accĂ©der aux dĂ©finitions de SEEK_DATA et SEEK_HOLE depuis <unistd.h> .

Les opérations SEEK_HOLE et SEEK_DATA sont prises en charge avec les systÚmes de fichiers suivants :

-

Btrfs (depuis Linux 3.1)

-

OCFS (depuis Linux 3.2)

-

XFS (depuis Linux 3.5)

-

ext4 (depuis Linux 3.8)

-

tmpfs (5) (depuis Linux 3.8)

-

NFS (depuis Linux 3.18)

-

FUSE (depuis Linux 4.5)

-

GFS2 (depuis Linux 4.15)

VALEUR RENVOYÉE

lseek (), si elle rĂ©ussit, renvoie le nouvel emplacement, mesurĂ© en octets depuis le dĂ©but du fichier. En cas d’échec, la valeur (off_t) -1 est renvoyĂ©e, et errno contient le code d’erreur.

ERREURS

EBADF

fd n’est pas un descripteur de fichier ouvert

EINVAL

Soit whence n’est pas valable, soit la position demandĂ©e serait nĂ©gative, ou aprĂšs la fin d’un pĂ©riphĂ©rique.

ENXIO

whence vaut SEEK_DATA ou SEEK_HOLE , et offset est aprĂšs la fin du fichier, ou whence vaut SEEK_DATA et offset est dans un trou Ă  la fin du fichier.

EOVERFLOW

La position rĂ©sultante dans le fichier ne peut ĂȘtre reprĂ©sentĂ©e dans un off_t .

ESPIPE

fd est associé à un tube (pipe), un socket ou une file FIFO.

VERSIONS

Sous Linux, l’utilisation de lseek () sur un pĂ©riphĂ©rique terminal Ă©choue avec l’erreur ESPIPE .

STANDARDS

POSIX.1-2008.

HISTORIQUE

POSIX.1-2001, SVr4, 4.3BSD.

SEEK_DATA et SEEK_HOLE sont des extensions non normalisées existant aussi sous Solaris, FreeBSD et DragonFly BSD. Leur intégration est proposée pour la prochaine révision de POSIX (Issue 8).

NOTES

Consultez open (2) pour en savoir plus sur la relation entre les descripteurs de fichiers, les descriptions de fichiers ouverts et les fichiers.

Si l’attribut d’état du fichier O_APPEND est positionnĂ© sur la description du fichier ouvert, une opĂ©ration write (2) dĂ©place toujours la position dans le fichier Ă  la fin du fichier, indĂ©pendamment de l’utilisation de lseek ().

Certains périphériques ne permettent pas de positionnement direct, POSIX ne précise quels périphériques doivent gérer lseek ().

VOIR AUSSI

dup (2), fallocate (2), fork (2), open (2), fseek (3), lseek64 (3), posix_fallocate (3)

TRADUCTION

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 Jean-Philippe MENGUAL <jpmengual@debian.org>

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 .