Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

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

&pagelevel(4)&pagelevel

Definition

#include <unistd.h>

int ftruncate (int fildes, off_t length);
int ftruncate64 (int fildes, off64_t length);
int truncate (const char *path, off_t length);
int truncate64 (const char *path, off64_t length);

Beschreibung

ftruncate() setzt die Länge einer normalen Datei mit dem Deskriptor fildes auf eine Länge von length Bytes fest.

truncate() unterscheidet sich von ftruncate() lediglich dadurch, dass die Datei über einen Zeiger path, der auf einen Pfadnamen verweist, angesprochen wird.

Die Auswirkung von ftruncate() und truncate() auf andere Typen von Dateien ist undefiniert. Wenn die Datei vorher länger als length Bytes war, kann auf die Bytes hinter der Position length nicht mehr zugegriffen werden. War die Datei vorher kürzer, so werden die Bytes zwischen der Dateiende-Marke vor dem Aufruf und der Dateiende-Marke nach dem Aufruf mit Nullen gefüllt. Bei ftruncate() muss die Datei zum Schreiben geöffnet sein; bei truncate() muss die effektive Benutzernummer des Prozesses das Schreibrecht für die Datei besitzen.

Wenn die Anforderung dazu führen würde, dass die Dateigröße den aktuellen für den Prozess definierten Grenzwert für die maximale Länge einer Datei überschreitet, wird die Funktion nicht ausgeführt, und das System schickt dem Prozess das Signal SIGXFSZ.

Diese Funktionen ändern nicht die aktuelle Position in der Datei. Bei erfolgreicher Ausführung, wenn die Dateigröße geändert wurde, aktualisieren diese Funktionen die Felderst_ctime und st_mtime der Datei. Die Bits S_ISUID und S_ISGID des Dateimodus werden evtl. gelöscht.

Es besteht kein funktionaler Unterschied zwischen ftruncate()/ truncate() und ftruncate64()/ truncate64(), außer dass bei ftruncate64()und truncate64()die Länge als Offset-Typ off64_t angegeben wird.

Returnwert

0

bei Erfolg.


-1

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

ftruncate(), ftruncate64(), truncate()und truncate64() schlagen fehl, wenn gilt:

 

EINTR

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

 

EINVAL

Der Wert von length ist negativ.

 

EFBIG oder EINVAL 



Der Wert von length ist größer als die maximal zulässige Dateigröße.

 

EIO

Beim Lesen oder Schreiben des Dateisystems trat ein E/A-Fehler auf.


Erweiterung


EINVAL

Es wurde versucht, auf eine BS2000-Datei zuzugreifen. (Ende)

 

ftruncate ()und ftruncate64() schlagen  fehl, wenn gilt:

EBADF oder EINVAL



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

 

EINVAL

fildes bezeichnet eine Datei, die nur zum Lesen geöffnet wurde.

 

truncate ()und truncate64() schlagen  fehl, wenn gilt:

 

EACCES

Für eine Komponente des Pfadpräfixes existiert keine Sucherlaubnis, oder für die über path angesprochene Datei existiert keine Schreiberlaubnis.

 

EISDIR

Die über path angesprochene Datei ist ein Verzeichnis.

 

ELOOP

Beim Übersetzen von path traten zu viele symbolische Verweise auf.

 

ENAMETOOLONG



Die Länge einer Komponente des Pfadnamens überschreitet {NAME_MAX} Zeichen, oder die Länge des Pfadnamens überschreitet {PATH_MAX} Zeichen.

Die Auflösung symbolischer Verweise im Pfadnamen führt zu einem Zwischenergebnis, dessen Länge {PATH_MAX} überschreitet.

 

ENOENT

Entweder existiert eine Komponente des Pfadpräfixes nicht, oder path verweist auf eine leere Zeichenkette.

 

ENOTDIR

Eine Komponente des Pfadpräfixes aus path ist kein Verzeichnis.

 

EROFS

Die über path angesprochene Datei befindet sich in einem schreibgeschützten Dateisystem.

Hinweis

ftruncate(), ftruncate64(), truncate()und truncate64() sind nur für POSIX-Dateien erlaubt.

Siehe auch

open(), unistd.h.