Rechercher une page de manuel

Chercher une autre page de manuel:

lseek

Autres langues

Langue: pl

Autres versions - même langue

Version: 2001-09-24 (fedora - 25/11/07)

Section: 2 (Appels système)

NAZWA

lseek - zmiana pozycji w pliku dla odczytu/zapisu

SKŁADNIA

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

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

OPIS

Funkcja lseek zmienia przesunięcie dla deskryptora pliku fildes na wartość podaną w argumencie offset, zgodnie z dyrektywą whence w następujący sposób:
SEEK_SET
Przesunięcie jest ustawiane na offset bajtów.
SEEK_CUR
Przesunięcie jest ustawiane na aktualną pozycję plus offset bajtów.
SEEK_END
Przesunięcie jest ustawiane na rozmiar pliku plus offset bajtów.

Funkcja lseek umożliwia ustawienie przesunięcia w pliku poza istniejący koniec pliku. Jeśli później w tym miejscu zostaną zapisane jakieś dane, to kolejne odczyty danych z luki zwrócą bajty zerowe (aż do czasu, gdy dane zostaną rzeczywiście w tej luce zapisane).

WARTOŚĆ ZWRACANA

Po pomyślnym zakończeniu lseek zwraca ustawione przesunięcie, liczone w bajtach od początku pliku. W przeciwnym wypadku zwracane jest (off_t)-1 oraz ustawiane jest errno w sposób wskazujący rodzaj błędu.

BŁĘDY

EBADF
fildes nie jest otwartym deskryptorem pliku.
ESPIPE
fildes jest związany z potokiem, gniazdem, lub FIFO.
EINVAL
whence jest nieprawidłową wartością.

ZGODNE Z

SVr4, POSIX, BSD 4.3

OGRANICZENIA

urządzenie musi wspierać tę operację.

Ograniczenia specyficzne dla Linuksa, to: użycie lseek na urządzeniu terminalowym zwraca ESPIPE. Inne systemy zwracają liczbę zapisanych znaków, używając SEEK_SET do ustawiania licznika. Niektóre urządzenia, np. /dev/null nie powodują wystąpienia błędu ESPIPE, ale zwracają wskaźnik o nieokreślonej wartości.

UWAGI

Podczas konwersji starego kodu, należy podstawiać zamiast wartości whence następujące makra:
stare nowe
0 SEEK_SET
1 SEEK_CUR
2 SEEK_END
L_SET SEEK_SET
L_INCR SEEK_CUR
L_XTND SEEK_END

SVR1-3 zwracają long zamiast off_t, BSD zwraca int.

Należy zauważyć, że deskryptory plików utworzone przez dup(2) i fork(2) współdzielą wskaźnik bieżącej pozycji w pliku, więc wykonywanie operacji typu "seek" na takich plikach może prowadzić do wyścigu.

ZOBACZ TAKŻE

dup(2), fork(2), open(2), fseek(3)
La mathématique est la reine des sciences, et l'arithmétique est la
reine des mathématiques.
-+- Carl Friedrich Gauss -+-