Provided by: manpages-de-dev_4.15.0-9_all bug

BEZEICHNUNG

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

ÜBERSICHT

       #include <unistd.h>

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

   Mit Glibc erforderliche 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 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 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.)

KONFORM ZU

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

ANMERKUNGEN

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

       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.

       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.

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

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)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  5.13  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts,  Informationen,  wie  Fehler gemeldet werden können sowie die
       aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

Ü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⟩.