TRUNCATE(2)

BEZEICHNUNG
truncate, ftruncate - kürzt eine Datei auf eine bestimmte Länge

ÜBERSICHT
#include <unistd.h>

int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);

BESCHREIBUNG
Die Funktionen truncate und ftruncate bewirken, dass die reguläre Datei, die durch path oder fd angegeben ist, auf eine Größe von exakt length Bytes abgeschnitten wird.

Wenn die Datei vorher größer war, gehen überschüssige Daten verloren. Wenn die Datei vorher kleiner war, wird sie vergrößert und die zusätzlichen Bytes werden als Nullen gelesen.

Der Dateizeiger wird nicht verändert.

Für ftruncate muss die Datei zum Schreiben geöffnet sein, für truncate muss die Datei schreibbar sein.

RÜCKGABEWERT
Bei Erfolg gibt die Funktion 0 zurück. Bei Fehlern wird -1 zurückgegeben und errno entsprechend gesetzt.

FEHLER
Für truncate:

EACCES
    Ein Teil des Pfades kann nicht gelesen werden oder die Datei kann vom Benutzer nicht beschrieben werden.

EFAULT
    pfad liegt außerhalb des Programmspeichers.

EFBIG
    Der Parameter length ist größer als die maximale Dateigröße. (XSI)

EINTR
    Während der Ausführung wurde ein Signal empfangen.

EINVAL
    Der Parameter length ist negativ oder größer als die maximale Dateigröße.

EIO Ein I/O Fehler ist beim aktualisieren der Inode aufgetreten.

EISDIR
    pfad ist ein Verzeichnis, keine Datei.

ELOOP
    Zu viele Symbolische Links wurden im Pfad gefunden.

ENAMETOOLONG
    Ein Teil des Pfades ist größer als 255 Zeichen oder der komplette Pfad überschreitet eine Größe von 1023 Zeichen.

ENOENT
    Die angegebene Datei existiert nicht.

ENOTDIR
    Ein Teil des Pfades ist kein Verzeichnis.

EROFS
    Die Datei befindet sich in einem read-only Dateisystem.

ETXTBSY
    Die Datei ist eine Prozedur, die ausgeführt wird.

Für ftruncate gelten die gleichen Fehlermeldungen. Anstelle von Dingen, die mit path schieflaufen können, gibt es jetzt Dinge, die mit fd schiefgehen können:

EBADF
    fd ist kein gültiger Dateideskriptor.

EINVAL oder EBADF
    fd ist nicht zum Schreiben geöffnet.

EINVAL
    fd referenziert einen Socket, nicht eine Datei.

KONFORM ZU
4.4BSD, SVr4 (diese Funktionsaufrufe traten zuerst in BSD 4.2 auf). POSIX 1003.1-1996 beschreibt ftruncate. POSIX 1003.1-2001 beschreibt ebenfalls truncate als eine XSI-Erweiterung.

SVr4 beschreibt zusätzlich die Fehler EMFILE, EMULTIHP, ENFILE und ENOLINK für truncate. SVr4 dokumentiert für ftruncate den zusätzlichen Fehler EAGAIN.

BERMERKUNGEN
Die Beschreibung oben ist für XSI-kompatible Systeme gedacht. Für nicht-XSI-kompatible Systeme erlaubt der POSIX-Standard zwei Verhalten von ftruncate, wenn length größer ist als die Dateilänge (beachten Sie, dass truncate ist für eine derartige Umgebung nicht spezifiziert): entweder wird ein Fehler zurückgeliefert oder die Datei wird vergrößert. (Die meisten Unixe folgen den XSI-Anforderungen.)

SEE ALSO
open(2).