Provided by: manpages-de-dev_1.4-1_all bug

BEZEICHNUNG

       truncate, ftruncate - eine Datei auf eine bestimmte Länge verkürzen

ÜBERSICHT

       #include <unistd.h>
       #include <sys/types.h>

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

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       Für truncate():
           _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
           || /* Seit Glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

       Für ftruncate():
           _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
           || /* Seit Glibc 2.3.5: */ _POSIX_C_SOURCE >= 200112L

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 Byte verkürzt wird.

       Falls die Datei vorher größer war, geht ein Teil  der  Daten  verloren.  Falls  die  Datei
       vorher  kleiner  war,  wird  sie  vergrößert  und der zusätzliche Teil wird als Null-Bytes
       ('\0') gelesen.

       Der Datei-Offset wird nicht geändert.

       Wenn die Größe geändert wurde, werden die Felder  st_ctime  und  st_mtime  (die  Zeit  der
       letzten  Zustandsänderung  und  die  Zeit  der  Modifikation; siehe stat(2)) für die Datei
       aktualisiert; die Berechtiungs-Bits Set-User-ID und Set-Group-ID können gelöscht werden.

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

RÜCKGABEWERT

       Bei  Erfolg  wird  Null  zurückgegeben.  Bei  einem Fehler wird -1 zurückgegeben und errno
       entsprechend gesetzt.

FEHLER

       Für truncate():

       EACCES Eine Komponente des Pfad-Präfix darf nicht  durchsucht  werden  oder  die  benannte
              Datei kann vom Benutzer nicht geschrieben werden (siehe auch path_resolution(7).)

       EFAULT Path zeigt aus dem dem Prozess zugewiesenen Adressraum heraus.

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

       EINTR  Der  Aufruf  wurde  von  einem  Signal-Handler  unterbrochen,  während  er  auf den
              Abschluss wartete (siehe fcntl(2) und signal(7)).

       EINVAL Das Argument length ist negativ oder größer als die maximale Dateigröße.

       EIO    Bei der Aktualisierung des Inodes trat ein E/A-Fehler auf.

       EISDIR Die angegebene Datei ist ein Verzeichnis.

       ELOOP  Beim Übersetzen des Pfadnamens wurden zu viele symbolische Links vorgefunden.

       ENAMETOOLONG
              Ein Teil eines Pfades ist größer als  255  Zeichen  oder  ein  kompletter  Pfadname
              überschreitet eine Größe von 1023 Zeichen.

       ENOENT Die angegebene Datei existiert nicht.

       ENOTDIR
              Eine Komponente des Pfad-Präfixes ist kein Verzeichnis.

       EPERM  Das  unterliegende  Dateisystem  erlaubt  keine  Vergrößerung  der  Datei über ihre
              aktuelle Größe hinaus.

       EROFS  Die angegebene Datei befindet sich auf einem nur lesbaren (read-only) Dateisystem.

       ETXTBSY
              Die  Datei  ist  eine  reine  Prozedurdatei  (gemeinsam  genutzte  Textdatei),  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  dem  Dateideskriptor  fd  schiefgehen
       können:

       EBADF  fd ist kein gültiger Deskriptor.

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

       EINVAL fd referenziert keine reguläre Datei.

KONFORM ZU

       4.4BSD, SVr4, POSIX.1-2001 (diese Systemaufrufe traten zuerst in BSD 4.2 auf).

ANMERKUNGEN

       Die BESCHREIBUNG oben ist für XSI-konforme Systeme gedacht. Für nicht XSI-konforme Systeme
       erlaubt der POSIX-Standard zweierlei Verhalten von ftruncate, wenn length größer  ist  als
       die Dateilänge (beachten Sie, dass truncate für eine derartige Umgebung nicht spezifiziert
       ist): entweder wird ein Fehler zurückgeliefert oder die Datei  wird  vergrößert.  Wie  die
       meisten  Unix-Implementierungen  folgt  Linux  der XSI-Forderung, wenn es sich mit nativen
       Dateisystemen befasst. Aber einige nicht native Dateisysteme gestatten die Verwendung  von
       truncate()  und  ftruncate()  nicht,  um  eine  Datei  über  ihre aktuelle Größe hinweg zu
       erweitern. Ein namhaftes Beispiel für Linux ist VFAT.

       Die ursprünglichen Linux-Systemaufrufe truncate() und ftruncate() wurden nicht entwickelt,
       um   große  Datei-Offsets  zu  behandeln.  Folglich  fügte  Linux  2.4  die  Systemaufrufe
       truncate64() und ftruncate64() für die Bearbeitung sehr großer Dateien  hinzu.  Allerdings
       können  diese  Details  von  Anwendungen  ignoriert werden, welche die Glibc nutzen. Deren
       Wrapper-Funktionen verwenden die neueren Systemaufrufe transparent, wenn  diese  verfügbar
       sind.

       On some 32-bit architectures, the calling signature for these system calls differ, for the
       reasons described in syscall(2).

FEHLER

       Ein Fehler der Header-Dateien von Glibc 2.12  hatte  zur  Folge,  dass  der  erforderliche
       Minimalwert von _POSIX_C_SOURCE zur Bereitstellung der Deklaration von ftruncate() 200809L
       war anstatt 200112L. Der Fehler ist in späteren Versionen der Glibc behoben.

SIEHE AUCH

       open(2), stat(2), path_resolution(7)

KOLOPHON

       This page is part of release 3.54 of the Linux man-pages project.  A  description  of  the
       project,     and    information    about    reporting    bugs,    can    be    found    at
       http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die   deutsche   Übersetzung   dieser   Handbuchseite   wurde    von    Dennis    Stampfer
       <kontakt@dstampfer.de>,  Helge  Kreutzmann <debian@helgefjell.de>, Martin Eberhard Schauer
       <Martin.E.Schauer@gmx.de> und Mario Blättermann <mario.blaettermann@gmail.com> 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 <debian-l10n-german@lists.debian.org>.