Provided by: manpages-de-dev_4.23.1-1_all bug

BEZEICHNUNG

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

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <unistd.h>

       int truncate(const char *Pfad, off_t Länge);
       int ftruncate(int dd, off_t Länge);

   Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)):

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

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

BESCHREIBUNG

       Die  Funktionen  truncate()  und  ftruncate() bewirken, dass die reguläre Datei, die durch
       Pfad oder dd angegeben ist, auf eine Größe von exakt Länge 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 Nullbytes (»\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 inode(7)) für die Datei
       aktualisiert; die Modus-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
       gesetzt, um den Fehler anzuzeigen.

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 Das Argument Pfad zeigt aus dem dem Prozess zugewiesenen Adressraum heraus.

       EFBIG  Das Argument Länge 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 Länge 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.

       EPERM  Die Aktion wurde durch eine Dateiversiegelung verhindert; siehe fcntl(2).

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

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

       Für ftruncate() gelten die gleichen Fehlermeldungen. Anstelle von  Dingen,  die  mit  Pfad
       schieflaufen  können,  gibt  es  jetzt  Dinge,  die mit dem Dateideskriptor dd schiefgehen
       können:

       EBADF  dd ist kein zulässiger Dateideskriptor.

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

       EINVAL dd   referenziert   keine   reguläre   Datei   oder   ein    gemeinsam    benutztes
              POSIX-Speicherobjekt.

       EINVAL oder EBADF
              Der  Dateideskriptor  dd  ist nicht zum Schreiben offen. POSIX erlaubt beide Fehler
              für diesen Fall und portable  Anwendungen  sollten  damit  umgehen  können.  (Linux
              erzeugt EINVAL.)

VERSIONEN

       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 Länge  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.

       Auf  einigen   32-Bit-Architekturen   unterscheidet   sich   die   Aufrufsignatur   dieser
       Systemaufrufe. Die Gründe sind in syscall(2) beschrieben.

STANDARDS

       POSIX.1-2008.

GESCHICHTE

       POSIX.1-2001, 4.4BSD, SVr4 (erschien zuerst in 4.2BSD).

       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.

ANMERKUNGEN

       ftruncate()  kann  auch  dazu  verwandt  werden,  die  Größe  eines  gemeinsam   benutzten
       POSIX-Speicherobjektes zu setzen; siehe shm_open(3).

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

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

ÜBERSETZUNG

       Die    deutsche    Übersetzung    dieser   Handbuchseite   wurde   von   Dennis   Stampfer
       <kontakt@dstampfer.de>,   Martin   Eberhard   Schauer   <Martin.E.Schauer@gmx.de>,   Helge
       Kreutzmann  <debian@helgefjell.de>  und  Mario  Blättermann <mario.blaettermann@gmail.com>
       erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version  3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.