Provided by: manpages-de-dev_2.5-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():
           _XOPEN_SOURCE >= 500
               || /* Seit Glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
               || /* Glibc-Versionen <= 2.19: */ _BSD_SOURCE

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

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  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  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 Das Argument 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.

       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 path schieflaufen
       können, gibt es jetzt Dinge, die mit dem Dateideskriptor fd schiefgehen können:

       EBADF  fd ist kein zulässiger Dateideskriptor.

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

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

       EINVAL oder EBADF
              Der Dateideskriptor fd 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
       setzten; siehe shm_open(7).

       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.

       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  4.15  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>, 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>.