fclear oder fclear64 Subroutine

Zweck

Erzeugt eine Bohrung in einer Datei.

Bibliothek

Standard-C-Bibliothek (libc.a)

Syntax

off_t fclear ( FileDescriptor,  NumberOfBytes)
int FileDescriptor;
off_t NumberOfBytes;

off64_t fclear64 ( FileDescriptor,  NumberOfBytes)
int FileDescriptor;
off64_t NumberOfBytes;

Beschreibung

Die Unterprogramme fclear und fclear64 löschen die durch den Parameter NumberOfBytes angegebene Anzahl von Bytes, beginnend mit dem aktuellen Dateizeiger für die im Parameter FileDescriptor angegebene Datei. Wenn Network File System (NFS) auf Ihrem System installiert ist, kann sich diese Datei auf anderen Knoten befinden.

Die Subroutine Fclear kann nur bis zu OFF_MAX Byte der Datei löschen, während fclear64 bis zur maximalen Dateigröße löschen kann.

Die Subroutinen Fclear und fclear64 können nicht auf eine Datei angewendet werden, die ein Prozess im Modus O_DEFER geöffnet hat.

Der erfolgreiche Abschluss der Unterprogramme fclear und fclear64 löscht das SetUserID(S_ISUID) der Datei, wenn eine der folgenden Bedingungen erfüllt ist:

  • Der aufrufende Prozess verfügt nicht über Rootberechtigung.
  • Die effektive Benutzer-ID des aufrufenden Prozesses stimmt nicht mit der Benutzer-ID der Datei überein.
  • Die Datei kann von der Gruppe (S_IXGRP) oder anderen (_IXOTH) ausgeführt werden.

Diese Unterroutine löscht auch das SetGroupID(S_ISGID), wenn:

  • Die Datei stimmt nicht mit der effektiven Gruppen-ID oder einer der zusätzlichen Gruppen-IDs des Prozesses überein.

    ODER

  • Die Datei kann vom Eigner (S_IXUSR) oder anderen (_IXOTH) ausgeführt werden.
    Hinweis: Das Löschen der SetUserID und SetGroupID kann auch dann erfolgen, wenn das Unterprogramm fehlschlägt, weil die Daten in der Datei geändert wurden, bevor der Fehler erkannt wurde.

In der Programmierumgebung mit Unterstützung für große Dateien wird Fclear als fclear64neu definiert.

Parameter

Element Beschreibung
FileDescriptor Gibt an, dass die mit dem Parameter FileDescriptor angegebene Datei zum Schreiben geöffnet sein muss. Der FileDescriptor ist eine kleine positive ganze Zahl, die anstelle des Dateinamens verwendet wird, um eine Datei zu identifizieren. Diese Funktion unterscheidet sich von der logisch äquivalenten Schreiboperation dadurch, dass sie vollständige Blöcke von binären Nullen an das Dateisystem zurückgibt und Lücken in der Datei erstellt.
NumberOfBytes Gibt die Anzahl Byte an, um die der Suchzeiger erweitert wird. Wenn Sie die Unterprogramme fclear und fclear64 nach dem Ende einer Datei verwenden, wird der Rest der Datei gelöscht und der Suchzeiger um NumberOfBytes vorgerückt. Die Dateigröße wird aktualisiert, um diese neue Bohrung einzuschließen, die die aktuelle Dateiposition am Byte unmittelbar hinter dem neuen Dateiendezeiger belässt.

Rückgabewerte

Bei erfolgreichem Abschluss wird ein Wert von NumberOfBytes zurückgegeben. Andernfalls wird ein Wert von -1 zurückgegeben und die globale Variable errno wird gesetzt, um den Fehler anzuzeigen.

Fehlercodes

Die Subroutinen Fclear und fclear64 schlagen fehl, wenn mindestens eine der folgenden Bedingungen zutrifft:

Element Beschreibung
EIO E/A-Fehler.
EBADF Der Wert für FileDescriptor ist kein gültiger Dateideskriptor, der zum Schreiben geöffnet ist.
EINVAL Die Datei ist keine reguläre Datei.
EMDATEI Die Datei wird O_DEFER von einem oder mehreren Prozessen zugeordnet.
EAGAIN Die Schreiboperation in der Subroutine Fclear ist aufgrund einer erzwungenen Schreibsperre für die Datei fehlgeschlagen.
Element Beschreibung
EFBIG Der aktuelle Offset plus NumberOfBytes übersteigt das Offset-Maximum, das in der mit FileDescriptor verbundenen Beschreibung der geöffneten Datei festgelegt wurde.
Element Beschreibung
EFBIG Es wurde versucht, eine Datei zu schreiben, die die Dateigrößenbegrenzung des Prozesses oder die maximale Dateigröße überschreitet. Wenn der Benutzer die Umgebungsvariable XPG_SUS_ENV=ON vor der Ausführung des Prozesses festgelegt hat, wird das Signal SIGXFSZ (SIGXFSZ an den Prozess gesendet, wenn die Dateigrößenbegrenzung des Prozesses überschritten wird.

Wenn NFS auf dem System installiert ist, können die Subroutinen fclear und fclear64 ebenfalls fehlschlagen, wenn Folgendes zutrifft:

Element Beschreibung
EZEITDOUT Das Zeitlimit für die Verbindung wurde überschritten.