Linux

CentOS 5.3

lseek(2)


LSEEK

NOM

lseek − Positionner la tête de lecture/écriture dans un fichier.

SYNOPSIS

#include <sys/types.h>
#include <unistd.h>

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

DESCRIPTION

La fonction lseek() place la tête de lecture/écriture à la position offset dans le fichier ouvert associé au descripteur fildes en suivant la directive whence ainsi :

SEEK_SET

La tête est placée à offset octets depuis le début du fichier.

SEEK_CUR

La tête de lecture/écriture est avancée de offset octets.

SEEK_END

La tête est placée à la fin du fichier plus offset octets.

La fonction lseek() permet de placer la tête au-delà de la fin actuelle du fichier. Si des données sont écrites à cet emplacement, une lecture ultérieure de l’espace intermédiaire retournera des zéros (jusqu’à ce que d’autres données y soient écrites).

VALEUR RENVOYÃE

lseek(), s’il 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

fildes n’est pas un descripteur de fichier ouvert.

EINVAL

whence n’est pas SEEK_SET, SEEK_CUR ou SEEK_END, ou la tête de lecture serait négative, ou serait après la fin du périphérique.

EOVERFLOW

La tête de lecture ne peut pas être représentée sur un off_t.

ESPIPE

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

CONFORMITÃ

SVr4, SD 4.3, POSIX.1-2001.

RESTRICTIONS

Certains périphériques ne permettent pas de positionnement direct, POSIX ne précise pas le comportement à adopter dans ce cas.

Restrictions spécifiques à Linux : l’utilisation de lseek() sur un périphérique tty renvoie ESPIPE. Les autres systèmes renvoient le nombre de caractères écrits en utilisant SEEK_SET pour positionner le compteur. Certains périphériques, comme /dev/null, ne renvoie pas l’erreur ESPIPE, mais renvoie un pointeur dont la valeur est indéfinie.

NOTES

Lors de la conversion d’un ancien code, substituez les valeurs suivantes :

SVr1-3 renvoie un long à la place d’un off_t, BSD renvoie un int.

Notez que les descripteurs de fichiers dupliqués par dup(2) ou fork(2) partagent le même pointeur de position. Ainsi le déplacement sur de tels fichiers peut conduire à des problèmes d’accès concurrents.

VOIR AUSSI

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

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 10 octobre 1996 et révisée le 14 août 2006.

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 lseek ». N’hésitez pas à signaler à l’auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


lseek(2)