Rechercher une page de manuel
lseek
Langue: pl
Version: 2001-09-24 (fedora - 25/11/07)
Section: 2 (Appels système)
NAZWA
lseek - zmiana pozycji w pliku dla odczytu/zapisuSKŁ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.3OGRANICZENIA
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)un cerf chantant "Stranger in the night" au clair de lune avec des
guêtres ?
-+- Woody Allen -+-
Contenus ©2006-2010 Benjamin Poulain
Design ©2006-2010 Maxime Vantorre