Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ truncate(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fcntl(2)

open(2)

unistd(4)

lfs(5)

truncate(3C)                                                   truncate(3C)

NAME
     truncate, ftruncate, truncate64, ftruncate64 - Datei auf angegebene
     Länge setzen

SYNTAX
     #include <unistd.h>

     int truncate(const char *path, offt length);

     int ftruncate(int fildes, offt length);

     int truncate64(const char *path, off64t length);

     int ftruncate64(int fildes, off64t length);

BESCHREIBUNG
     Durch die Funktion ftruncate() erhält die normale Datei, auf die
     fildes verweist, eine Größe von length Bytes.

     Durch die Funktion truncate() erhält die normale Datei, die durch path
     angegeben ist, eine Größe von length Bytes.

     Die Auswirkungen von ftruncate() und truncate() auf andere Dateitypen
     sind unbestimmt. Wenn die Datei zuvor größer als length war, gehen
     Daten verloren. War die Datei zuvor kürzer als length, werden die
     Bytes zwischen der alten und der neuen Länge als Nullen gelesen. Bei
     ftruncate() muß die Datei zum Schreiben geöffnet sein; bei truncate()
     muß der Prozeß über die Schreiberlaubnis für die Datei verfügen.

     Wenn durch die Anforderung die Dateigröße über den für den Prozeß gel-
     tenden weichen Grenzwert für die Dateigröße hinausgehen würde, schlägt
     der Prozeß fehl, und die Implementierung erzeugt das Signal SIGXFSZ
     für den Prozeß.

     Diese Funktionen ändern nicht den Datei-Offset für der Datei zugeord-
     nete offene Dateideskriptoren. Bei erfolgreicher Ausführung markieren
     diese Funktionen die Felder stctime und stmtime der Datei zum Aktua-
     lisieren, sofern die Dateigröße geändert wurde. Bei einer normalen
     Datei wird möglicherweise auch der Inhalt der Bits SISUID und SISGID
     des Dateimodus gelöscht.

     Diese Funktionen werden nur auf bereits bestehende Dateien angewendet,
     so daß für sie nicht das für creat() geltende Codierungsrisiko
     besteht.

     Wenn ftruncate() verwendet wird, um die Größe einer Datei zu erhöhen,
     gleicht die Semantik der einer Funktion write(), die Nullen in die
     Datei schreibt. Damit die Konsistenz mit write() gewährt bleibt,
     schlägt die Funktion ftruncate() fehl, wenn die Anforderung über das
     Offset-Maximum hinausgeht (auch wenn die Datei durch die Anforderung
     verkürzt würde).




Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

truncate(3C)                                                   truncate(3C)

     Es besteht kein funktionaler Unterschied zwischen
     truncate()/ftruncate() und truncate64()/ftruncate64(), außer bei der
     Interpretation von off64t [siehe lfs(5)].

FEHLER
     Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     truncate() und ftruncate() schlagen fehl, wenn wenigstens eine der
     folgenden Bedingungen erfüllt ist:

     EINTR         Während der Ausführung von truncate() wurde ein Signal
                   empfangen.

     EINVAL        Das Argument length war kleiner als 0.

     EFBIG oder EINVAL
                   Das Argument length war größer als die maximale Datei-
                   größe.

     EIO           Beim Lesen vom Dateisystem oder Schreiben auf dieses
                   trat ein Ein-/Ausgabefehler auf.

     truncate() schlägt fehl, wenn zumindest eine der folgenden Bedingungen
     erfüllt ist:

     EACCES        Eine Komponente des Pfadpräfixes darf nicht durchsucht
                   werden.

     EACCES        Für die Datei path existiert keine Schreiberlaubnis.

     EFAULT        path zeigt über den zugewiesenen Adreßbereich des Pro-
                   zesses hinaus.

     EISDIR        Die Datei path ist ein Verzeichnis.

     ELOOP         Beim Auflösen von path traten zu viele symbolische Links
                   auf.

     EMFILE        Die maximale Anzahl der erlaubten Dateideskriptoren des
                   Prozesses wurde erreicht.

     EMULTIHOP     Teile von path erfordern den Sprung auf mehrere ferne
                   Rechner, und der Dateisystemtyp erlaubt dies nicht.

     ENAMETOOLONG  Die Länge einer Komponente aus path überschreitet
                   NAMEMAX, oder die Länge von path überschreitet
                   PATHMAX.

     ENFILE        Es konnte nicht mehr Speicherplatz für die Dateitabelle
                   des Systems zugewiesen werden.


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

truncate(3C)                                                   truncate(3C)

     ENOENT        Entweder existiert eine Komponente des Pfadpräfixes
                   nicht, oder die Datei path existiert nicht.

     ENOLINK       path zeigt auf einen fernen Rechner, und der Link auf
                   diesen Rechner ist nicht mehr aktiv.

     ENOTDIR       Eine Komponente des Pfadpräfixes aus path ist kein Ver-
                   zeichnis.

     EROFS         Die Datei, auf die path verweist, befindet sich in einem
                   schreibgeschützten Dateisystem.

     ETXTBSY       Die Datei, auf die path verweist, ist eine reine Proze-
                   durdatei (gemeinsam benutzter Text), die ausgeführt
                   wird.

     ftruncate() schlägt fehlt, wenn wenigstens eine der folgenden Bedin-
     gungen erfüllt ist:

     EAGAIN        Die Datei existiert, logische Datei-/Satzsperren sind
                   gesetzt, und es liegen noch ausstehende Satzsperren für
                   die Datei vor [siehe chmod(2)].

     EBADF oder EINVAL
                   fildes ist kein Dateideskriptor, der zum Schreiben
                   geöffnet ist.

     EFBIG         Die Datei ist eine reguläre Datei, und die Länge über-
                   schreitet das Offset-Maximum, das in der fildes zugeord-
                   neten internen Beschreibung der offenen Datei festgelegt
                   ist.

     ENOLINK       fildes zeigt auf einen fernen Rechner, und der Link auf
                   diesen Rechner ist nicht mehr aktiv.

     EINVAL        Das Argument fildes verweist auf eine Datei, die ohne
                   Schreiberlaubnis geöffnet wurde.

     Die Funktion truncate() kann bei folgender Bedingung fehlschlagen:

     ENAMETOOLONG  Die Auflösung des Pfadnamens eines symbolischen Links
                   hat ein Zwischenergebnis erzeugt, dessen Länge PATHMAX
                   überschreitet.

ERGEBNIS
     Nach erfolgreicher Ausführung wird 0 zurückgegeben. Ansonsten wird -1
     zurückgeliefert und errno gesetzt, um den Fehler anzuzeigen.

SIEHE AUCH
     fcntl(2), open(2), unistd(4), lfs(5).




Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026