table of contents
TRUNCATE(2) | Linux-Programmierhandbuch | TRUNCATE(2) |
BEZEICHNUNG¶
truncate, ftruncate - eine Datei auf eine bestimmte Länge verkürzenÜBERSICHT¶
#include <unistd.h>Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):
_BSD_SOURCE ||
_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Seit Glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
_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
- Bei der Auflösung des Pfadnamens wurden zu viele symbolische Verknüpfungen gefunden.
- 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.
- 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.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¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux- man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler gemeldet werden können, finden sich unter 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> und Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> erstellt.8. September 2011 | Linux |