.\" -*- coding: UTF-8 -*-
.\" Copyright (c) 1980, 1991 Regents of the University of California.
.\" and Copyright (c) 2011, Michael Kerrisk <mtk.manpages@gmail.com>
.\" All rights reserved.
.\"
.\" SPDX-License-Identifier: BSD-4-Clause-UC
.\"
.\"     @(#)lseek.2	6.5 (Berkeley) 3/10/91
.\"
.\" Modified 1993-07-23 by Rik Faith <faith@cs.unc.edu>
.\" Modified 1995-06-10 by Andries Brouwer <aeb@cwi.nl>
.\" Modified 1996-10-31 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 1998-01-17 by Michael Haardt
.\"   <michael@cantor.informatik.rwth-aachen.de>
.\" Modified 2001-09-24 by Michael Haardt <michael@moria.de>
.\" Modified 2003-08-21 by Andries Brouwer <aeb@cwi.nl>
.\" 2011-09-18, mtk, Added SEEK_DATA + SEEK_HOLE
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH lseek 2 "2 maja 2024 r." "Linux man\-pages 6.8" 
.SH NAZWA
lseek \- zmienia pozycję przesunięcia pliku do odczytu/zapisu
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#include <unistd.h>\fP
.P
\fBoff_t lseek(int \fP\fIfd\fP\fB, off_t \fP\fIoffset\fP\fB, int \fP\fIwhence\fP\fB);\fP
.fi
.SH OPIS
\fBlseek\fP zmienia przesunięcie opisu otwartego pliku (OFD), powiązanego z
deskryptorem pliku \fIfd\fP na wartość podaną w argumencie \fIoffset\fP, zgodnie z
dyrektywą \fIwhence\fP w następujący sposób:
.TP 
\fBSEEK_SET\fP
Przesunięcie pliku jest ustawiane na \fIoffset\fP bajtów.
.TP 
\fBSEEK_CUR\fP
Przesunięcie pliku jest ustawiane na aktualną pozycję plus \fIoffset\fP bajtów.
.TP 
\fBSEEK_END\fP
Przesunięcie pliku jest ustawiane na rozmiar pliku plus \fIoffset\fP bajtów.
.P
\fBlseek\fP umożliwia ustawienie przesunięcia w pliku poza istniejący plik
(jednak nie zmienia to rozmiaru pliku). Jeśli później w tym miejscu zostaną
zapisane jakieś dane, to kolejne odczyty danych z luki (dziury) zwrócą bajty
null (\[Bq]\e0\[rq]), aż do czasu, gdy dane zostaną rzeczywiście w tej luce
zapisane.
.SS "Szukanie danych i dziur w pliku"
Od Linuksa 3.1, Linux obsługuje następujące dodatkowe wartości \fIwhence\fP:
.TP 
\fBSEEK_DATA\fP
Dopasowuje przesunięcie pliku do następnego położenia w pliku, większego lub
równego przesunięciu \fIoffset\fP, które zawiera dane. Jeśli \fIoffset\fP wskazuje
na dane, to przesunięcie pliku jest ustawiane na \fIoffset\fP.
.TP 
\fBSEEK_HOLE\fP
Dopasowuje przesunięcie pliku do następnej dziury w pliku, większej lub
równej przesunięciu \fIoffset\fP. Jeśli \fIoffset\fP wskazuje wewnątrz dziury, to
przesunięcie pliku jest ustawiane na \fIoffset\fP. Jeśli po \fIoffset\fP nie
występuje dziura, to przesunięcie pliku jest dopasowane do końca pliku
(tj. występuje domniemana dziura na końcu każdego pliku).
.P
W obu powyższych przypadkach \fBlseek\fP() zawiedzie, jeśli \fIoffset\fP wskazuje
poza koniec pliku.
.P
Opisywane operacje pozwalają aplikacjom na lokalizowanie dziur w rzadko
(elastycznie) alokowanych plikach. Może okazać się przydatne w aplikacjach
takich jak narzędzia kopii zapasowej, które mogą zaoszczędzić miejsce przy
tworzeniu kopii zapasowej, przy zachowaniu dziur, jeśli posiadają mechanizm
do ich odkrywania.
.P
.\" https://lkml.org/lkml/2011/4/22/79
.\" http://lwn.net/Articles/440255/
.\" http://blogs.oracle.com/bonwick/entry/seek_hole_and_seek_data
Do celów tych operacji, za dziurę uważa się sekwencję zer, która (normalnie)
nie byłaby przydzielona w przedmiotowym nośniku pliku. Jednak system plików
nie ma obowiązku informowania o dziurach, tak więc operacje te nie są pewnym
mechanizmem wyszukiwania przestrzeni rzeczywiście przydzielonej plikowi (co
więcej, sekwencja zer, która rzeczywiście została zapisana na przedmiotowym
nośniku może nie zostać zgłoszona jako dziura). W najprostszej
implementacji, system plików może obsługiwać te operacje w ten sposób, że
\fBSEEK_HOLE\fP zawsze zwróci przesunięcie końca pliku, a \fBSEEK_DATA\fP zawsze
zwróci \fIoffset\fP (tj. nawet gdy położenie, do którego odnosi się \fIoffset\fP
jest dziurą, może być rozważane jako składające się z danych będących
sekwencją zer).
.P
Konieczne jest zdefiniowana makra \fB_GNU_SOURCE\fP, aby pozyskać definicje
\fBSEEK_DATA\fP i \fBSEEK_HOLE\fP z \fI<unistd.h>\fP.
.P
Operacje \fBSEEK_HOLE\fP i \fBSEEK_DATA\fP są obsługiwane w następujących
systemach plików:
.IP \[bu] 3
Btrfs (od Linuksa 3.1)
.IP \[bu]
.\" commit 93862d5e1ab875664c6cc95254fc365028a48bb1
OCFS (od Linuksa 3.2)
.IP \[bu]
XFS (od Linuksa 3.5)
.IP \[bu]
ext4 (od Linusa 3.8)
.IP \[bu]
\fBtmpfs\fP(5) (od Linuksa 3.8)
.IP \[bu]
.\" commit 1c6dcbe5ceff81c2cf8d929646af675cd59fe7c0
.\" commit 24bab491220faa446d945624086d838af41d616c
NFS (od Linuksa 3.18)
.IP \[bu]
.\" commit 0b5da8db145bfd44266ac964a2636a0cf8d7c286
FUSE (od Linuksa 4.5)
.IP \[bu]
.\" commit 3a27411cb4bc3ce31db228e3569ad01b462a4310
GFS2 (od Linuksa 4.15)
.SH "WARTOŚĆ ZWRACANA"
Po pomyślnym zakończeniu \fBlseek\fP() zwraca ustawione przesunięcie, liczone w
bajtach od początku pliku. W razie wystąpienia błędu, zwracana jest wartość
\fI(off_t)\ \-1\fP oraz ustawiane jest \fIerrno\fP w sposób wskazujący rodzaj
błędu.
.SH BŁĘDY
.TP 
\fBEBADF\fP
\fIfd\fP nie jest deskryptorem otwartego pliku.
.TP 
\fBEINVAL\fP
.\" Some systems may allow negative offsets for character devices
.\" and/or for remote filesystems.
\fIwhence\fP jest nieprawidłowe. Albo: wynikowe przesunięcie pliku byłoby
ujemne lub poza końcem przeszukiwalnego urządzenia.
.TP 
\fBENXIO\fP
\fIwhence\fP wynosi \fBSEEK_DATA\fP lub \fBSEEK_HOLE\fP, a \fIoffset\fP jest poza końcem
pliku albo \fIwhence\fP wynosi \fBSEEK_DATA\fP, a \fIoffset\fP jest w dziurze na
końcu pliku.
.TP 
\fBEOVERFLOW\fP
.\" HP-UX 11 says EINVAL for this case (but POSIX.1 says EOVERFLOW)
Wynikowego przesunięcia pliku nie da się przedstawić w \fIoff_t\fP.
.TP 
\fBESPIPE\fP
\fIfd\fP jest związany z potokiem, gniazdem, lub FIFO.
.SH WERSJE
.\" Other systems return the number of written characters,
.\" using SEEK_SET to set the counter. (Of written characters.)
W Linuksie, użycie \fBlseek\fP() na urządzeniu terminala zawiedzie z błędem
\fBESPIPE\fP.
.SH STANDARDY
POSIX.1\-2008.
.SH HISTORIA
POSIX.1\-2001, SVr4, 4.3BSD.
.P
.\" FIXME . Review http://austingroupbugs.net/view.php?id=415 in the future
\fBSEEK_DATA\fP i \fBSEEK_HOLE\fP są niestandardowymi rozszerzeniami obecnymi
również w Solarisie, FreeBSD i DragonFly BSD; proponuje się włączenie ich do
następnej rewizji POSIX (Issue 8).
.SH UWAGI
W podręczniku \fBopen\fP(2) opisano relacje pomiędzy deskryptorami pliku,
opisami otwartego pliku (OFD) i plikami.
.P
Jeśli znacznik statusu \fBO_APPEND\fP jest ustawiony na opisie otwartego pliku
(OFD), to \fBwrite\fP(2) \fIzawsze\fP przenosi przesunięcie pliku na koniec pliku,
niezależnie od użycia \fBlseek\fP().
.P
Niektóre urządzenia nie obsługują tego typu operacji, a POSIX nie opisuje,
które urządzenie muszą obsługiwać \fBlseek\fP().
.SH "ZOBACZ TAKŻE"
\fBdup\fP(2), \fBfallocate\fP(2), \fBfork\fP(2), \fBopen\fP(2), \fBfseek\fP(3),
\fBlseek64\fP(3), \fBposix_fallocate\fP(3)
.PP
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Przemek Borys <pborys@dione.ids.pl>,
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>
i
Michał Kułach <michal.kulach@gmail.com>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
