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¶
Uwaga! To tłumaczenie może być nieaktualne!
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)
Powyższe tłumaczenie pochodzi z nieistniejącego już
Projektu Tłumaczenia Manuali i
może nie być
aktualne. W razie zauważenia różnic między
powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub
funkcji, prosimy o zapoznanie się z oryginalną
(angielską) wersją strony podręcznika za pomocą
polecenia:
- man --locale=C 2 lseek
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.