man lseek (Appels systèmes) - Positionner la tête de lecture/écriture dans un fichier.
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 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 -1 est renvoyée, et errno contient le code d'erreur.
ERREURS
- EBADF
- Fildes n'est pas un descripteur de fichier ouvert.
- ESPIPE
- Fildes est associée à un tube (pipe), une socket, ou une file FIFO.
- EINVAL
- Whence est invalide.
CONFORMITÉ
SVr4, POSIX, BSD 4.3
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 :
c c l l. ancien nouveau 0 SEEK_SET 1 SEEK_CUR 2 SEEK_END L_SET SEEK_SET L_INCR SEEK_CUR L_XTND SEEK_END
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
TRADUCTION
Christophe Blaess, 1996-2003.