Provided by: manpages-de-dev_4.21.0-2_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.)

STANDARDS

       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)

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