Linux |
CentOS 5.3 |
|
lseek(2) |
lseek − Positionner la tête de lecture/écriture dans un fichier. |
#include <sys/types.h> off_t lseek(int fildes, off_t offset, int whence); |
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). |
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. |
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. |
SVr4, SD 4.3, POSIX.1-2001. |
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. |
Lors de la conversion d’un ancien code, substituez les valeurs suivantes : |