Definition | Optional off_t lseek (int fildes, off_t offset, int whence); | |||||||||||||||||||||||||||||||||||||||||||||||||||
Beschreibung | Wenn POSIX-Dateien ausgeführt werden, verhält sich die Funktion XPG-konform wie folgt:
Ist whence gleich Ist whence gleich Ist whence gleich Die symbolischen Konstanten Die Funktion lseek() hat keine Wirkung, wenn sie auf eine Datei angewendet wird, auf der nicht positioniert werden kann. lseek() erlaubt, dass der Lese-/Schreibzeiger hinter die existierenden Daten der Datei gesetzt werden kann. Werden später Daten an diese Position geschrieben, so liefern nachfolgende Leseoperationen in der Lücke Nullbytes, bis wirklich Daten in diese Lücke geschrieben wurden.
Es besteht kein funktionaler Unterschied zwischen lseek() und lseek64(), außer dass lseek64() den Offset-Typ off64_t verwendet. BS2000
Textdateien (SAM, ISAM) lassen sich absolut auf Dateianfang und -ende positionieren sowie auf eine vorher mit tell() gemerkte Position. Binärdateien (PAM, INCORE) lassen sich sowohl absolut positionieren (s.o.) als auch relativ um eine gewünschte Anzahl Bytes, bezogen auf Dateianfang, Dateiende oder aktuelle Position. SAM-Dateien werden mit elementaren Funktionen stets als Textdateien verarbeitet. Bedeutung, Kombinationsmöglichkeiten und Wirkung von offset und whence sind für Text- und Binärdateien unterschiedlich und werden deshalb im Folgenden getrennt beschrieben. Textdateien (SAM, ISAM)Mögliche Werte:
Sinnvolle Kombinationsmöglichkeiten und Wirkung:
Binärdateien (PAM, INCORE)Mögliche Werte:
Sinnvolle Kombinationsmöglichkeiten und Wirkung:
(Ende) | |||||||||||||||||||||||||||||||||||||||||||||||||||
Returnwert | neuer Wert des Lese-/Schreibzeigers, gemessen in Bytes vom Anfang der Datei, | |||||||||||||||||||||||||||||||||||||||||||||||||||
bei Erfolg. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
(off_t) -1 | bei Fehler. | |||||||||||||||||||||||||||||||||||||||||||||||||||
BS2000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
bei Erfolg. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
absolute Position in Textdateien | ||||||||||||||||||||||||||||||||||||||||||||||||||||
bei Erfolg. (Ende) | ||||||||||||||||||||||||||||||||||||||||||||||||||||
-1 | bei Fehler. | |||||||||||||||||||||||||||||||||||||||||||||||||||
Fehler |
| |||||||||||||||||||||||||||||||||||||||||||||||||||
|
| fildes ist kein offener Dateideskriptor. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
| whence besitzt keinen erlaubten Wert, oder die sich ergebende Dateiposition wäre nicht zulässig. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
| fildes ist einer Pipe oder FIFO zugeordnet. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
| Der resultierende Datei-Offset kann in der Struktur, auf die | ||||||||||||||||||||||||||||||||||||||||||||||||||
Hinweise | Ob eine BS2000- oder eine POSIX-Datei erzeugt wird, hängt von der Programmumgebung BS2000 Werden in eine Textdatei neue Sätze geschrieben (geöffnet zum Neuerstellen oder Anfügen) und erfolgt ein Ausnahme bei ANSI-Funktionalität: Wird bei einer Binärdatei hinter das Dateiende positioniert, entsteht ein Lücke zwischen den letzten physisch gespeicherten Daten und den neu geschriebenen Daten. Lesen aus dieser Lücke liefert binäre Nullen. Auf Systemdateien (SYSDTA, SYSLST, SYSOUT) kann nicht positioniert werden. Da die Informationen über die Dateiposition in einem Feld zusammengefasst werden, ergeben sich für die Größe von SAM- und ISAM-Dateien folgende Einschränkungen: SAM-Datei
ISAM-Datei
(Ende) | |||||||||||||||||||||||||||||||||||||||||||||||||||
Siehe auch |
|