.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 1980, 1991 Regents of the University of California. .\" and Copyright (c) 2011, Michael Kerrisk .\" All rights reserved. .\" .\" %%%LICENSE_START(BSD_4_CLAUSE_UCB) .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" %%%LICENSE_END .\" .\" @(#)lseek.2 6.5 (Berkeley) 3/10/91 .\" .\" Modified 1993-07-23 by Rik Faith .\" Modified 1995-06-10 by Andries Brouwer .\" Modified 1996-10-31 by Eric S. Raymond .\" Modified 1998-01-17 by Michael Haardt .\" .\" Modified 2001-09-24 by Michael Haardt .\" Modified 2003-08-21 by Andries Brouwer .\" 2011-09-18, mtk, Added SEEK_DATA + SEEK_HOLE .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH LSEEK 2 "8. Oktober 2016" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG lseek \- den Datei\-Offset für lesen/schreiben verändern .SH ÜBERSICHT \fB#include \fP .br \fB#include \fP .sp \fBoff_t lseek(int \fP\fIfd\fP\fB, off_t \fP\fIoffset\fP\fB, int \fP\fIwhence\fP\fB);\fP .SH BESCHREIBUNG Die Funktion \fBlseek\fP() setzt den Offset der mit dem Dateideskriptor \fIfd\fP verbundenen offenen Dateideskription gemäß der \fIwhence\fP\-Anweisung auf das Argument \fIoffset\fP wie folgt: .TP \fBSEEK_SET\fP Der Datei\-Offset wird auf \fIoffset\fP byte gesetzt. .TP \fBSEEK_CUR\fP Der Datei\-Offset wird auf die aktuelle Position plus \fIoffset\fP byte gesetzt. .TP \fBSEEK_END\fP Der Datei\-Offset wird auf die Dateigröße plus \fIoffset\fP byte gesetzt. .PP Die Funktion \fBlseek\fP() erlaubt es, den Offset einer Datei hinter ihr Dateiende zu setzen. (Das ändert aber nicht die Größe der Datei.) Wenn dort später Daten geschrieben werden, geben Lesezugriffe auf die Lücke zwischen der eigentlichen Datei und den neuen Daten solange Null\-Bytes (»\e0«) zurück, bis tatsächlich Daten in die Lücke geschrieben werden. .SS "Suchen von Daten und Lücken in der Datei" Seit Version 3.1 unterstützt Linux die folgenden zusätzlichen Werte für \fIwhence\fP: .TP \fBSEEK_DATA\fP Einstellen des Datei\-Offsets auf die nächste Position in der Datei größer oder gleich \fIoffset\fP, die Daten enthält. Falls \fIoffset\fP auf Daten zeigt, wird der Datei\-Offset auf\fIoffset\fP gesetzt. .TP \fBSEEK_HOLE\fP Einstellen des Datei\-Offsets auf die nächste Lücke in der Datei größer oder gleich als \fIoffset\fP. Falls \fIoffset\fP in ein Loch zeigt, wird der Datei\-Offset auf \fIoffset\fP gesetzt. Falls es hinter \fIoffset\fP keine Lücke gibt, wird der Datei\-Offset auf das Dateiende eingestellt (d.\ h., am Ende jeder Datei gibt es ein implizites Loch). .PP In beiden der obigen Fälle schlägt \fBlseek\fP() fehl, wenn \fIoffset\fP hinter das Dateiende weist. Diese Operationen ermöglichen Anwendungen, Löcher in einer Datei mit verstreut zugewiesenem Speicherplatz (sparsely allocated file) abzubilden. Dies kann nützlich sein für Anwendungen wie Werkzeuge für Datei\-Backups, die beim Erstellen von Backups Platz sparen und Löcher erhalten können, wenn sie über einen Mechanismus für die Erkennung von Löchern verfügen. .\" https://lkml.org/lkml/2011/4/22/79 .\" http://lwn.net/Articles/440255/ .\" http://blogs.oracle.com/bonwick/entry/seek_hole_and_seek_data Für die Zwecke dieser Operationen ist ein Loch eine Sequenz von Nullen, die (in der Regel) nicht in dem zugrunde liegenden Dateispeicher zugeordnet sind. Jedoch ist ein Dateisystem nicht verpflichtet Löcher zu berichten, sodass diese Operationen kein sicherer Mechanismus zum Abbilden des tatsächlich einer Datei zugeordneten Speicherplatzes sind. (Darüber hinaus wird eine Reihe von Nullen, die tatsächlich an den zugrunde liegenden Speicher geschrieben wurde, nicht als ein Loch gemeldet werden.) In der einfachsten Implementierung kann ein Dateisystem die Operationen unterstützen, indem \fBSEEK_HOLE\fP immer den Offset des Dateiendes und \fBSEEK_DATA\fP immer den \fIoffset\fP zurück geben (d.h. selbst wenn \fIoffset\fP auf ein Loch weist, kann dieses Loch als eine Datensequenz angesehen werden, die aus Nullen besteht). Das Featuretest\-Makro \fB_GNU_SOURCE\fP muss definiert sein, um die Definitionen von \fBSEEK_DATA\fP und \fBSEEK_HOLE\fP von \fI\fP beziehen zu können. Die Operationen \fBSEEK_HOLE\fP und \fBSEEK_DATA\fP werden von den folgenden Dateisystemen unterstützt: .IP * 3 Btrfs (seit Linux 3.1) .IP * 3 .\" commit 93862d5e1ab875664c6cc95254fc365028a48bb1 OCFS (seit Linux 3.2) .IP * XFS (seit Linux 3.5) .IP * Ext4 (seit Linux 3.8) .IP * \fBtmpfs\fP(5) (seit Linux 3.8) .IP * .\" commit 1c6dcbe5ceff81c2cf8d929646af675cd59fe7c0 .\" commit 24bab491220faa446d945624086d838af41d616c NFS (seit Linux 3.18) .IP * .\" commit 0b5da8db145bfd44266ac964a2636a0cf8d7c286 FUSE (seit Linux 4.5) .SH RÜCKGABEWERT Nach erfolgreicher Ausführung gibt \fBlseek\fP() die neue Position in der Datei zurück, gemessen in Bytes vom Anfang der Datei. Anderenfalls wird der Wert \fI(off_t)\ \-1\fP zurückgegeben und \fIerrno\fP gesetzt, um den den Fehler anzuzeigen. .SH FEHLER .TP \fBEBADF\fP \fIfd\fP ist kein Deskriptor für eine geöffnete Datei. .TP \fBEINVAL\fP .\" Some systems may allow negative offsets for character devices .\" and/or for remote filesystems. \fIwhence\fP ist ungültig. Oder: der resultierende Datei\-Offset wäre negativ oder hinter dem Ende eines durchsuchbaren Geräts. .TP \fBENXIO\fP \fIwhence\fP ist \fBSEEK_DATA\fP oder \fBSEEK_HOLE\fP und der Datei\-Offset ist hinter dem Dateiende. .TP \fBEOVERFLOW\fP .\" HP-UX 11 says EINVAL for this case (but POSIX.1 says EOVERFLOW) Der resultierende Datei\-Offset kann nicht in einem \fIoff_t\fP dargestellt werden. .TP \fBESPIPE\fP \fIfd\fP beschreibt eine Pipe, einen Socket oder ein FIFO. .SH "KONFORM ZU" POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.3BSD. .\" FIXME . Review http://austingroupbugs.net/view.php?id=415 in the future \fBSEEK_DATA\fP und \fBSEEK_HOLE\fP sind nicht standardisierte Erweiterungen, die auch in Solaris, FreeBSD und DragonFly BSD vorkommen; sie sind zur Aufnahme in die nächste POSIX\-Revision (Ausgabe 8) vorgeschlagen. .SH ANMERKUNGEN In \fBopen\fP(2) finden Sie Erläuterungen zu den Beziehungen zwischen Dateideskriptoren, offenen Dateideskriptionen und Dateien. Der Datentyp \fIoff_t\fP ist ein durch POSIX.1 spezifizierter vorzeichenbehafteter Ganzzahldatentyp. Manche Geräte unterstützen kein Suchen und POSIX legt nicht fest, welche Geräte \fBlseek\fP() unterstützen müssen. .\" Other systems return the number of written characters, .\" using SEEK_SET to set the counter. (Of written characters.) Unter Linux gibt die Verwendung von \fBlseek\fP() auf einem Terminal\-Gerät \fBESPIPE\fP zurück. Wenn alter Code konvertiert wird, ersetzen Sie die Werte von \fIwhence\fP durch die folgenden Makros: .TS c c l l. alt neu 0 SEEK_SET 1 SEEK_CUR 2 SEEK_END L_SET SEEK_SET L_INCR SEEK_CUR L_XTND SEEK_END .TE .\" .PP .\" SVr1-3 returns \fIlong\fP instead of \fIoff_t\fP, .\" (ancient) BSD returns \fIint\fP. .PP Beachten Sie, dass sich die von \fBdup\fP(2) oder \fBfork\fP(2) erzeugten Dateideskriptoren auf die gleichen offenen Dateideskriptionen (und damit Datei\-Offsets) beziehen, so dass das Suchen in den Dateien Race\-Conditions unterliegen können. .SH "SIEHE AUCH" \fBdup\fP(2), \fBfork\fP(2), \fBopen\fP(2), \fBfseek\fP(3), \fBlseek64\fP(3), \fBposix_fallocate\fP(3) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 4.09 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Peter Gerbrandt , Martin Eberhard Schauer , Mario Blättermann und Helge Kreutzmann erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an .